文章目录  1、指针 2、基础语法 2.1 定义指针 2.2 取地址操作符 `&` 2.3 解引用操作符 `*` 3、实战用法 3.1 指针作为函数参数 3.2 指针和结构体 3.3 指针和接收者   
 
变量是存储值的地方; 指针的值是一个变量的地址; 不是所有的值都有地址,但是所有的变量都有; 使用指针,可以在无须知道变量名字的情况下,间接读取或更新变量的值 ;var ptr *int
&x := 10
ptr := &x // 将 ptr 指向了变量 x 的内存地址
*y := *ptr // 获取指针 ptr 指向的变量的值
可以将指针作为函数的参数,以便在函数内部修改调用者传递的变量; func ModifyValueTo100(num int) {fmt.Printf("输入 num: %v\n", num)modifyValue(&num)fmt.Printf("修改后 num: %v\n", num)
}func modifyValue(ptr *int) {*ptr = 100
}
结构体字段可以是指针类型,这样可以减少复制大型结构体的开销; 同时可以在函数中修改结构体的字段值; type Person struct {Name stringAge  int
}func main() {p := &Person{Name: "Alice", Age: 25}fmt.Println(p.Name)  // 输出 "Alice"p.Name = "Bob"       // 修改结构体字段的值fmt.Println(p.Name)  // 输出 "Bob"
}
在方法定义中,可以使用指针作为接收者,这样可以在方法内部修改接收者的值; type Counter struct {count int
}func (c *Counter) Increment() {c.count++
}