golang-study/base/pointer/main.go
2021-09-20 14:53:23 +08:00

29 lines
802 B
Go

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)
}