Golang整理
2017-06-19 本文已影响44人
冰泡泡薄荷味
-
iota
iota是golang的一个关键字,此关键字用来声明enum的时候采用,默认从0开始,每遇到一个类似const就会重置为0。 - 通过开头字母大小写来实现变量和函数的公有私有。
- 将数组作为函数参数进行传递时,实际传入的是该数组的副本。
- 由于初始化数组时无法预知定义多大的空间,就需要使用类似
动态数组
的结构,go语言中采用slice
来实现数组的切片,类似python中的切片,slice
是一个引用类型,它总是指向一个底层的array,slice的声明类似array,只是不需要长度。当引用改变其中的元素时,其他所有的引用也会相应改变。常用内置函数:len
获取长度,cap
获取容量,append
追加元素,并返回一个和slice一样类型的slice,copy
函数从源slice的src中复制元素到目标dst,并且返回复制的元素个数。 -
map
类似python中的字典,格式为map[keyType]valueType
。-
map
无序,必须通过key
去获取。 - 长度不固定,是一种引用类型。
-
len
函数 -
map
不是安全的,在多个goroutine中使用时必须使用mutex lock
-
-
make
用于内建类型(map
,slice
,channel
)的内存分配。new
用于各种类型的内存分配。 -
go
中switch
默认相当于每个case
后面都加了break
。但是可以通过加fallthrough
强制执行后后面的代码。 -
main
函数和init
函数,在定义时不能有任何参数和返回值。 - 导入包时加前缀
_
是为了引入该包,而不直接使用包里面的函数,只是调用包中的init
函数。 -
interface
是一组method签名的集合,可以通过interface
来定义对象的一组行为。若某个对象实现了某个接口的所有方法,那么这个对象就实现了此接口。如果定义一个interface
的变量,那么这个变量里面可以存实现这个interface
的任意类型的对象。空interface
可以存储任何类型的数值。 -
element.(type)
只能在switch
中使用,其他地方不能使用。 -
golang
中的反射机制,就是能够检查程序在运行时的状态。