go语言常用内置函数

 

close

func close(c chan<- Type)

close用于关闭一个channel,使用close函数要注意以下几点:

  • 关闭一个只接受的channel会导致错误
  • 在一个已经关闭的channel上发送数据会导致panic
  • 关闭一个nil channel会导致panic
  • 在一个channel关闭之后,如果channel已经没有剩余数据等待接受了,这时候如果继续接收,会返回一个channel对应数据类型的nil value,如果接收的时候使用多返回值,第二个参数表示一个channel是否已经关闭。

 

len、cap

len:获取容器已存储的元素个数,不是容器的容量。

func len(v Type) int

cap:获取容器的最大存储元素的容量。

func cap(v Type) int

len和cap都接收多种类型的参数,返回值是int类型,具体接收哪些类型的参数以及返回的值的含义见下表

len,cap的返回值满足如下条件:

  • 0<=len(s)<=cap(s)
  • slice,map,channel的nil值的len为0
  • slice,channel的nil值的cap为0

 

append

append函数可以为切片动态添加元素,然后返回新的切片变量。

func append(slice []Type, elems ...Type) []type

slice为需要追加的源切片,elems为可变参数列表,返回值为追加后的切片。
在调用此函数时,通常需要以slice接收追加后的返回切片,否则slice仍为追加前的数据。

实例:

var a []int
a = append(a, 1) // 追加1个元素
a = append(a, 1, 2, 3) // 追加多个元素, 手写解包方式
a = append(a, []int{1,2,3}...) // 追加一个切片, 切片需要解包

不过需要注意的是,在使用 append() 函数为切片动态添加元素时,如果空间不足以容纳足够多的元素,切片就会进行“扩容”,此时新切片的长度会发生改变。

 

delete

delete函数用于删除map中对应key的键值对,如果map中不存在该key,则什么也不做

func delete(m map[Type]Type1, key Type)

  

new

new函数用来分配内存,一般是一个参数,参数为类型,它的返回值是一个指向新分配类型的指针,并且内存置为零。

func new(Type) *Type 

new经常用来初始化结构体。

 

make

func make(Type, size IntegerType) Type

内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上)。
跟 new 相同的是,第一个参数也是一个类型,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型。

 

  m>=n,且n和m必须是整型且不能为负数。

 

copy

 copy() 可以将一个数组切片复制到另一个数组切片中,如果加入的两个数组切片不一样大,就会按照其中较小的那个数组切片的元素个数进行复制。

 srcSlice 为数据来源切片,destSlice 为复制的目标(也就是将 srcSlice 复制到 destSlice),目标切片必须分配过空间且足够承载复制的元素个数,并且来源和目标的类型必须一致,copy() 函数的返回值表示实际发生复制的元素个数。

copy( destSlice, srcSlice []T) int

实例:

slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{5, 4, 3}
copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中
copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置

  

complex

complex 用于创建一个复数并返回。

func complex(r,i FloatType) ComplexType

参数列表中r 为复数的实部,i 表示为复数的虚部。

real

func real(c ComplexType) FloatType

real函数用于获取一个复数的实部。

imag

func imag(c ComplexType) FloatType

imag函数用于获取一个复数的虚部。

panic

func panic(v interface{})

panic 表示进程内的错误。panic 的原因来自于代码的逻辑 bug,比如强制类型转换失败,比如数组越界。这个代表了程序员的责任不到位,导致了程序的panic。
error 代表进程外的错误。比如输入符合预期。比如访问外部的服务失败。这些都不是程序员可以设计控制的。这些情况的错误处理是业务逻辑的一部分。

golang中提供panic用于错误处理。 

panic,直译为运行时恐慌,当panic被抛出异常后,如果我们没有在程序中添加任何保护措施的话,程序就会打印出panic的详细情况之后,终止运行。

 

posted @ 2020-03-26 13:09  -零  阅读(1211)  评论(0编辑  收藏  举报