指针
指针保存了值的内存地址。
类型 *T
是指向 T
类型值的指针。其零值为 nil
。
&
操作符会生成一个指向其操作数的指针。
*
操作符表示指针指向的底层值。
func main() {
i, j := 42, 2701
p := &i // 指向 i
fmt.Println(*p) // 通过指针读取 i 的值
*p = 21 // 通过指针设置 i 的值
fmt.Println(i) // 查看 i 的值
p = &j // 指向 j
*p = *p / 37 // 通过指针对 j 进行除法运算
fmt.Println(j) // 查看 j 的值
}
结构体
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
v.X = 4
}
数组
数组切片并不存储任何数据,它只是描述了底层数组中的一段。修改了切片的值就相当于修改了原数组。
切片拥有 长度 和 容量
len
和 cap
函数的区别是
- len 输出当前数组所包含的元素个数
- cap 输出从当前数组的第一个元素开始数,到其底层数组元素末尾的个数
func main() {
var slice1 []int = make([]int, 10)
var slice2 = slice1[:5]
fmt.Println(slice1)
fmt.Println(len(slice2)) // output: 5
fmt.Println(cap(slice2)) // output: 10
}