From 11aaa2d03a97850e1d6d71662ae9c7c206bc4289 Mon Sep 17 00:00:00 2001 From: yumaojun03 <719118794@qq.com> Date: Sun, 1 Feb 2026 17:37:44 +0800 Subject: [PATCH] =?UTF-8?q?```=20docs(day04):=20=E6=9B=B4=E6=96=B0README?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=86=85=E5=AD=98=E7=AE=A1=E7=90=86=E5=9B=BE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在README.md中更新目录链接,将原有的列表格式改为链接格式 - 添加Go语言结构体、指针和反射的相关文档链接 - 修改drawio图表文件,调整坐标参数和页面布局 - 增加堆栈内存管理的可视化图表,包含函数调用和变量分配示例 - 添加代码示例展示Go语言中的变量提升机制 ``` --- day04/README.md | 4 +- day04/pointer/README.md | 16 +++++ day04/pointer/image.png | Bin 0 -> 74918 bytes day04/pointer/link_list.drawio | 28 +++++++++ day04/reflect/README.md | 110 +++++++++++++++++++++++++++++++++ day04/reflect/main.go | 64 +++++++++++++++++++ day04/struct/json.drawio | 49 ++++++++++++++- 7 files changed, 268 insertions(+), 3 deletions(-) create mode 100644 day04/pointer/README.md create mode 100644 day04/pointer/image.png create mode 100644 day04/pointer/link_list.drawio create mode 100644 day04/reflect/README.md create mode 100644 day04/reflect/main.go diff --git a/day04/README.md b/day04/README.md index 378de00..4eaed32 100644 --- a/day04/README.md +++ b/day04/README.md @@ -1,5 +1,5 @@ # 结构体(2)与指针 + [Go语言结构体](./struct/README.md) -+ Go语言指针 -+ 扩展反射与内存对齐 \ No newline at end of file ++ [Go语言指针】【](./pointer/README.md) ++ [扩展: Go语言反射](./reflect/README.md) \ No newline at end of file diff --git a/day04/pointer/README.md b/day04/pointer/README.md new file mode 100644 index 0000000..a114734 --- /dev/null +++ b/day04/pointer/README.md @@ -0,0 +1,16 @@ +# 指针 + +## 陷阱 2:指针指向栈变量的地址逃逸 +Go 编译器会自动处理,通常无需担心: + +```go +func getPtr() *int { + v := 10 + return &v // v 虽然是局部变量,但 Go 会自动提升到堆 +} + +``` + +![alt text](image.png) + +## 作业: 实现链表节点和基本操作 \ No newline at end of file diff --git a/day04/pointer/image.png b/day04/pointer/image.png new file mode 100644 index 0000000000000000000000000000000000000000..f17a15965cb66c2e397d4923c698b84d64e3e21c GIT binary patch literal 74918 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%0Dp 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 ChKS7o literal 0 HcmV?d00001 diff --git a/day04/pointer/link_list.drawio b/day04/pointer/link_list.drawio new file mode 100644 index 0000000..b2aaa0b --- /dev/null +++ b/day04/pointer/link_list.drawio @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/day04/reflect/README.md b/day04/reflect/README.md new file mode 100644 index 0000000..0ecb2af --- /dev/null +++ b/day04/reflect/README.md @@ -0,0 +1,110 @@ +# 反射与内存对齐(扩展) + + + +## 反射获取值与类型 + +```go +// obj -> []byte 类型是 any +func JsonEncode(obj any) []byte { + // 反射获取类型信息 + ot := reflect.TypeOf(obj) + fmt.Println("类型名称:", ot.Name()) + fmt.Println("类型种类:", ot.Kind()) + // 类型名称: TranficTool + // 类型种类: struct + + // 反射获取值信息 + ov := reflect.ValueOf(obj) + fmt.Println("值:", ov) + // 值: {自行车 20 黑色} + + return []byte{} +} +``` + +## 反射获取stuct的字段和 Struct Tag + +```go +// obj -> []byte 类型是 any +func JsonEncode(obj any) []byte { + // 反射获取类型信息 + ot := reflect.TypeOf(obj) + fmt.Println("类型名称:", ot.Name()) + fmt.Println("类型种类:", ot.Kind()) + // 类型名称: TranficTool + // 类型种类: struct + + // 反射获取值信息 + ov := reflect.ValueOf(obj) + fmt.Println("值:", ov) + // 反射获取结构体字段信息(TranficTool) + for i := 0; i < ot.NumField(); i++ { + field := ot.Field(i) + fieldValue := ov.Field(i) + fmt.Printf(" 字段 %d: 名称=%s, 类型=%s, Tag=%s, JsonTag=%s, Value=%v\n", + i, field.Name, field.Type.Name(), field.Tag, field.Tag.Get("json"), fieldValue.Interface()) + } + + // 类型名称: TranficTool + // 类型种类: struct + // 值: {自行车 20 黑色} + // 字段 0: 名称=Name, 类型=string, Tag=json:"name", JsonTag=name, Value=自行车 + // 字段 1: 名称=Speed, 类型=int, Tag=json:"speed", JsonTag=speed, Value=20 + // 字段 2: 名称=Color, 类型=string, Tag=json:"color", JsonTag=color, Value=黑色 + // + // 很容易就可以构建出 Json 数据 + // {"name":"自行车","speed":20,"color":"黑色"} + + return []byte{} +} +``` + + +## 动态修改对象 + +```go +// obj -> []byte 类型是 any +func JsonEncode(obj any) []byte { + // 反射获取类型信息 + ot := reflect.TypeOf(obj) + + if ot.Kind() != reflect.Pointer && ot.Kind() != reflect.Struct { + panic("必须是结构体指针类型") + } + + ot = ot.Elem() // 获取指针指向的类型 + + fmt.Println("类型名称:", ot.Name()) + fmt.Println("类型种类:", ot.Kind()) + // 类型名称: TranficTool + // 类型种类: struct + + // 反射获取值信息 + ov := reflect.ValueOf(obj).Elem() + fmt.Println("值:", ov) + // 反射获取结构体字段信息(TranficTool) + for i := 0; i < ot.NumField(); i++ { + field := ot.Field(i) + fieldValue := ov.Field(i) + if field.Name == "Name" { + fmt.Println("发现 Name 字段,准备进行特殊处理...") + fieldValue.SetString(fieldValue.String() + "_changed") + } + fmt.Printf(" 字段 %d: 名称=%s, 类型=%s, Tag=%s, JsonTag=%s, Value=%v\n", + i, field.Name, field.Type.Name(), field.Tag, field.Tag.Get("json"), fieldValue.Interface()) + } + + // 类型名称: TranficTool + // 类型种类: struct + // 值: {自行车 20 黑色} + // 字段 0: 名称=Name, 类型=string, Tag=json:"name", JsonTag=name, Value=自行车 + // 字段 1: 名称=Speed, 类型=int, Tag=json:"speed", JsonTag=speed, Value=20 + // 字段 2: 名称=Color, 类型=string, Tag=json:"color", JsonTag=color, Value=黑色 + // + // 很容易就可以构建出 Json 数据 + // {"name":"自行车","speed":20,"color":"黑色"} + + return []byte{} +} +``` \ No newline at end of file diff --git a/day04/reflect/main.go b/day04/reflect/main.go new file mode 100644 index 0000000..151e1a4 --- /dev/null +++ b/day04/reflect/main.go @@ -0,0 +1,64 @@ +package main + +import ( + "fmt" + "reflect" +) + +func main() { + // bike 对象 + bike := TranficTool{Name: "自行车", Speed: 20, Color: "黑色"} + JsonEncode(&bike) + fmt.Println(bike) +} + +// obj -> []byte 类型是 any +func JsonEncode(obj any) []byte { + // 反射获取类型信息 + ot := reflect.TypeOf(obj) + + if ot.Kind() != reflect.Pointer && ot.Kind() != reflect.Struct { + panic("必须是结构体指针类型") + } + + ot = ot.Elem() // 获取指针指向的类型 + + fmt.Println("类型名称:", ot.Name()) + fmt.Println("类型种类:", ot.Kind()) + // 类型名称: TranficTool + // 类型种类: struct + + // 反射获取值信息 + ov := reflect.ValueOf(obj).Elem() + fmt.Println("值:", ov) + // 反射获取结构体字段信息(TranficTool) + for i := 0; i < ot.NumField(); i++ { + field := ot.Field(i) + fieldValue := ov.Field(i) + if field.Name == "Name" { + fmt.Println("发现 Name 字段,准备进行特殊处理...") + fieldValue.SetString(fieldValue.String() + "_changed") + } + fmt.Printf(" 字段 %d: 名称=%s, 类型=%s, Tag=%s, JsonTag=%s, Value=%v\n", + i, field.Name, field.Type.Name(), field.Tag, field.Tag.Get("json"), fieldValue.Interface()) + } + + // 类型名称: TranficTool + // 类型种类: struct + // 值: {自行车 20 黑色} + // 字段 0: 名称=Name, 类型=string, Tag=json:"name", JsonTag=name, Value=自行车 + // 字段 1: 名称=Speed, 类型=int, Tag=json:"speed", JsonTag=speed, Value=20 + // 字段 2: 名称=Color, 类型=string, Tag=json:"color", JsonTag=color, Value=黑色 + // + // 很容易就可以构建出 Json 数据 + // {"name":"自行车","speed":20,"color":"黑色"} + + return []byte{} +} + +type TranficTool struct { + // `` 表示字符串 都是 Struct Tag, 结构体标签,lib 反射使用 + Name string `json:"name"` + Speed int `json:"speed"` + Color string `json:"color"` +} diff --git a/day04/struct/json.drawio b/day04/struct/json.drawio index affe2cd..4094c55 100644 --- a/day04/struct/json.drawio +++ b/day04/struct/json.drawio @@ -1,6 +1,6 @@ - + @@ -70,6 +70,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +