Skip to content

go笔记2

Published: at 07:57

指针

指针保存了值的内存地址。

类型 *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
}

数组

数组切片并不存储任何数据,它只是描述了底层数组中的一段。修改了切片的值就相当于修改了原数组。

切片拥有 长度容量

lencap 函数的区别是 - 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
}