1,不同类型的变量不能互相赋值或者操作,如
var a int8 = 16
var b int = 23
c := a + b
会报错,且int虽然默认32位,但和int32是不同的类型
iota只在声明枚举时有用
2、数组声明:
array:
var arr [5]int 长度为5,元素默认值为0,通过下标访问,如arr[2]
省略长度赋值法 var arr := […]int{1,2,3,4,5}
数组之间赋值是值赋值,所以函数传数组,是一个拷贝
slice:其实是数组的引用,保存的是数组指针
var arr [5]int{1,2,3,4,5}
sliceB := arr[1,3]
sliceB中即包含arr[1],arr[2],但不包括arr[3]
slice方法:
len:获取长度
cap:获取容量
append:追加元素,由于是引用类型,会改变底层数组的值,如果超过容量,会新开辟一个数组
copy:拷贝一个slice的元素到另一个slice,并返回拷贝的元素个数
map:
var numbers map[string] int
numbers := make(map[string]int)
map是无序的,每次打印都不一样,所以只能通过key取,不能通过index取
map长度不固定,跟slice一样,为引用类型
delete(numbers,”one”) // 删除key为one的元素
make初始化内部结构,并填充适当的值,返回初始化后(非零)值
new 返回结构的指针