docs: Pointer 指针

This commit is contained in:
Shikong 2021-09-20 14:53:23 +08:00
parent 6e16b0244c
commit 163ffa5fa9

28
base/pointer/main.go Normal file
View File

@ -0,0 +1,28 @@
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)
}