指针
GO的指针用法与C语言中指针用法类似,&用于取址, *用于取值。唯一区别:没有指针运算
结构体
例:
type struct_example struct {
a int
b int
}
结构体字段的访问与C语言相同,用点号来访问。
当用结构体指针来访问字段时,也使用点号来访问。
数组
定义方法: var a[666] int
使用方法与C类似,但GO中数组名是一个值,而C中数组名是一个指针。另外GO中数组长度不能改变。
如果长度写成 [...],GO编译器会根据定义的元素来推导长度
例: a := [...]int{1,2,3,4,5}
数组切片 slice
slice就像是一种动态数组,可以改变长度。
slice是对底层数组的抽象和控制,包含三种元数据。
1.指向数组的指针
2.slice的长度
3.slice的容量,即最大长度
定义方法例 a := [ ]int{1,2,3,4,5,6}
给定一个array或者其他slice,一个新的slice通过a[I:J]的方式创建。
这会创建一个新的slice,指向变量a,从序号I开始,结束在序号J之前,长度为J-I
例:
q := a[1:3] //即 q 为 { 2,3 }的slice
可以使用make函数来构造slice
例;
a := make([]int,2,5) //定义成功的slice的长度为2,容量为5.
slice的零值是nil
可以使用append函数向slice添加元素,使slice变长。slice会自动调整容量,即调整数组长度,如果追加的内容长度超过当前的容量时,slice会自动在分配一块足够大的内存。
可以使用range格式对slice进行迭代循环。(使用range时可以通过赋值给 _ 来忽略序号或值)
可以使用copy函数对两个slice进行复制。如果这两个slice长度不同时,会按照长度小slice中的元素个数进行复制。
有疑问加站长微信联系(非本文作者)