您的位置:首页 >Golang值类型与引用类型怎么选
发布于2026-01-08 阅读(0)
扫一扫,手机访问
Go中无官方“引用类型”,slice/map/chan等属“引用语义类型”,赋值复制结构头;传值适用于小、不可变、无需修改的类型(如基础类型、小结构体、time.Time);传指针用于共享可变状态或避免大对象拷贝。

Go 语言中没有“引用类型”这个官方概念(官方只分 值类型 和 指针类型),但日常开发中常把 slice、map、chan、func、interface 等称为“引用语义类型”——它们底层持有指针,赋值或传参时复制的是结构头(如 len/cap/ptr),而非底层数据。是否用指针,核心看两点:是否需要修改原值 和 是否过大影响性能。
适合传值的场景:小、不可变、无需跨函数修改。
传指针不是为了“省空间”,而是为了 共享可变状态 或 避免大对象拷贝。
它们本身是值类型(header 结构体),但行为像引用——因为 header 里存着指向底层数组/哈希表的指针。
interface{} 是两个字长的结构体(type ptr + data ptr),传 interface{} 是传值,但底层 data 可能是指针。
基本上就这些。不复杂但容易忽略——关键不是记规则,而是理解每个类型在内存里长什么样、谁在共享哪块数据。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9