青岛手机建站模板广东省网站集约化建设
2026/5/24 4:59:50 网站建设 项目流程
青岛手机建站模板,广东省网站集约化建设,wordpress的数据库在那里,重庆新闻appGo 里的指针不复杂#xff0c;但非常实用#xff0c;不像 C/C 那么危险#xff0c;也不像 Java 那样完全看不到。一、Go 指针是什么1. 指针的本质指针 变量的内存地址var a int 10 var p *int aa#xff1a;值是 10a#xff1a;a 的地址p#xff1a;指向 a …Go 里的指针不复杂但非常实用不像 C/C 那么危险也不像 Java 那样完全看不到。一、Go 指针是什么1. 指针的本质指针 变量的内存地址var a int 10 var p *int aa值是10aa 的地址p指向a的指针*p通过指针访问a的值fmt.Println(a) // 10 fmt.Println(p) // 0xc00001a0a8地址 fmt.Println(*p) // 10口诀 取地址解引用*2. Go 指针的“安全边界”和 C/C 不同Go不能指针运算p不存在不能随便转类型有 GC不用手动 free空指针是nilvar p *int fmt.Println(p nil) // true二、Go 指针使用场景1. 修改函数外的变量非常核心❌ 值传递改不到外面func add(a int) { a } func main() { x : 10 add(x) fmt.Println(x) // 10 }✅ 指针传递func add(a *int) { *a } func main() { x : 10 add(x) fmt.Println(x) // 11 }Go 只有值传递但“指针的值”可以指向同一块内存2 结构体 指针Go 的高频用法type User struct { Name string Age int } func grow(u *User) { u.Age } func main() { u : User{Name: Tom, Age: 18} grow(u) fmt.Println(u.Age) // 19 }注意 Go 一个很贴心的地方u.Age // 等价于 (*u).AgeGo 自动帮解引用不需要满屏*3. new / 的区别p1 : new(int) // *int值是 0 p2 : User{} // *User等价写法var a int p : a一般习惯基本类型结构体User{}或构造函数三、Go 指针的核心使用场景场景 1需要修改对象本身最常见func updateName(u *User) { u.Name Jack }场景 2避免大对象拷贝性能 内存type BigStruct struct { Data [100000]int } func process(b *BigStruct) { // 不拷贝 100000 个 int }场景 3区分“没传”和“传了零值”这个在 API / JSON / DB 特别重要type Req struct { Age *int json:age }nil→ 前端没传0→ 前端明确传了 0场景 4方法接收者用指针Go 面向对象func (u *User) Grow() { u.Age }什么时候用指针接收者需要修改对象结构体比较大保证方法一致性推荐官方建议一个结构体要么全指针接收者要么全值接收者场景 5与 interface 配合type Writer interface { Write() } type File struct{} func (f *File) Write() {} var w Writer w File{} // 正确这样不行因为方法在*File上w File{} // 没实现接口场景 6并发 共享状态需谨慎使用var count int var mu sync.Mutex func inc() { mu.Lock() count mu.Unlock() }虽然不是“显式指针”但底层都是共享内存 地址四、Go 指针 vs Java/C对比GoJavaC手动内存❌❌✅指针运算❌❌✅空指针nilnullnullptr参数传递值传递值传递引用语义值/引用Go 指针 “受控版 C 指针 Java 引用的灵活性”五、新手常见坑❌ 对 map / slice 再取指针func f(m *map[string]int) // 一般没必要因为map / slice 本身就是“引用类型”直接传就能改❌ nil 指针解引用var u *User u.Age 10 // panic一定要先初始化。六、总结Go 指针的目标只有三个修改原数据减少拷贝表达“可选值”

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询