golang中只用定义不用初始化的类型规律总结

在go语言的开发中,有很多的内置类型是我们只需要定义而不需要初始化的, 如上文中提到的bytes.Buffer, strings.Builder。 其实在go语言中官方给我们定义的很多的类型都只需要定义,不需要初始化。

他们都有2个共同的规律:

1. 类型定义里面的字段都是隐藏或者非导出的

即在你查看相关文档时他的类型定义里面一般都会有 // contains filtered or unexported fields (包含隐藏或非导出字段), 他们一般都长这个样:

2. 一般都没有提供相关的NewXxx函数

如,这个strings包里面的这个Builder, 在官方文档里面 在type Builder里面就没有相关的New函数,

同时他的类型定义是长这样的

那么我们就可以放心的字节定义不用初始化就使用了。

其他常用的比如 sync同步包里面的定义,只有一个Cond类型使用需要初始化,其他类型是哟共都不选初始化,直接定义一个变量就可以使用, 如 var mu sync.Mutex //定义变量 mu.Lock() 直接使用

总结

对应go官方定义的类型,只要是同时满足上面2个条件,那这个类型就可以不用初始化直接使用。

相关推荐
奇谱5 小时前
Quipus,LightRag的Go版本的实现
开发语言·后端·语言模型·golang·知识图谱
纪元A梦7 小时前
华为OD机试真题——跳格子3(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
Bohemian9 小时前
浅谈Golang逃逸分析
后端·面试·go
栩栩云生10 小时前
📥 x-cmd install | Pathos - 告别混乱!你的终端 $PATH 环境变量管理神器
go·命令行
LuckyLay10 小时前
LeetCode算法题(Go语言实现)_49
算法·leetcode·golang
航哥11 小时前
Go语言编译器的正确打开方式(一)- 从源码编译 go
go·编译器
gospace11 小时前
Golang Event Bus 最佳实践:使用 NSQite 实现松耦合架构
开发语言·架构·golang·事件·总线·event·event bus
Bug-Free生活13 小时前
Go语言入门到入土——一、安装和Hello World
开发语言·后端·golang
zhuyasen13 小时前
与AI深度融合的Go开发框架sponge,解决使用cursor、trae等AI辅助编程工具开发项目时的部分痛点
人工智能·低代码·golang
特立独行的猫a15 小时前
嵌入式Linux设备使用Go语言快速构建Web服务,实现设备参数配置管理方案探究
linux·前端·golang