package main import "fmt" func main() { // 使用 &变量名 取 变量地址 // 使用 *指针变量 取 对应 值 n := 100 p := &n fmt.Printf("n => %T %d\n", n, n) fmt.Printf("p => %T %p\n", p, p) fmt.Printf("*p => %T %d\n", *p, *p) fmt.Println("=========================================================") // 这种方式创建的变量为未初始化的 nil (空)指针 如果 直接对其进行赋值操作 将引发异常 var pi *int fmt.Printf("pi => %T %v\n", pi, pi) // 正确方式 // 通过 new 获取 对应类型 的 零值 指针 // new 一般用于 给 基本数据 类型 申请内存 如: string, int, byte 等 // make 用于 为 slice, map, chan 申请内存 pi = new(int) *pi = 100 fmt.Printf("pi => %T %p\n", pi, pi) fmt.Printf("*pi => %T %d\n", *pi, *pi) }