From 163ffa5fa9d1c6195353295ea401ad2660b7823b Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Mon, 20 Sep 2021 14:53:23 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20Pointer=20=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/pointer/main.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 base/pointer/main.go diff --git a/base/pointer/main.go b/base/pointer/main.go new file mode 100644 index 0000000..cba5e3b --- /dev/null +++ b/base/pointer/main.go @@ -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) + +}