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个条件,那这个类型就可以不用初始化直接使用。

相关推荐
「、皓子~1 小时前
后台管理系统的诞生 - 利用AI 1天完成整个后台管理系统的微服务后端+前端
前端·人工智能·微服务·小程序·go·ai编程·ai写作
inhere2 小时前
gookit/goutil v0.7.0 新版本发布:模块调整与功能增强
开源·go·github
pltrue3 小时前
Go 重构案例分享:订单创建逻辑重构
go·php
梦兮林夕3 小时前
02 gRPC 语法及类型介绍
后端·go·grpc
DemonAvenger4 小时前
Go结构体内存布局优化与字段排序技巧
性能优化·架构·go
程序员爱钓鱼7 小时前
Go语言实战指南 —— Go中的反射机制:reflect 包使用
后端·google·go
大模型铲屎官10 天前
【Go语言-Day 7】循环控制全解析:从 for 基础到 for-range 遍历与高级控制
开发语言·人工智能·后端·golang·大模型·go语言·循环控制
深栈解码10 天前
golang源码分析(一) 程序启动流程
后端·go
mxpan10 天前
深入探究 Go 语言中使用 SQLite 数据库
数据库·golang·sqlite
小雄Ya10 天前
短信平台开发方案:流量控制与短信不丢失保障
后端·go