Golang 零值、空值与空结构的使用小结
作者:Penge666
本文主要介绍了Golang 零值、空值与空结构的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
零值
- 对于值类型:布尔类型为
false, 数值类型为0,字符串为"",数组和结构会递归初始化其元素或字段,即其初始值取决于元素或字段。 - 对于引用类型: 均为 nil,包括指针 pointer,函数 function,接口 interface,切片 slice,管道 channel,映射 map。
nil
空值(nil) :在Go语言中,nil是一个预定义的标识符,用于表示指针、通道(channel)、映射(map)、切片(slice)、函数以及接口类型的“零值”。它相当于这些类型的“无”或“不存在”。例如,一个nil指针不指向任何内存地址,而一个nil通道不连接任何发送者或接收者。
- 初始化未使用的指针或引用类型变量。
- 检查一个变量是否已被初始化或有效。
- 在错误处理中,表示一个操作没有返回错误。
空结构
作用二
使用 chan struct{} 代替 chan bool 在 goroutines 之间传递信号。使用 bool 容易让人不理解该值,true or false,但是使用 chan struct{} 就很清楚,我们不在乎值,只关心发生的事儿,更容易表达清楚一些。
作用一
用来强制使用字段名来初始化结构体,防止未命名的初始化方式。
正常的结构体
type Q struct {
X, Y int
}
// 两种初始化方式都可以
q1 := Q{X: 1, Y: 1} // 推荐:使用字段名
q2 := Q{1, 1} // 不推荐:按位置初始化
添加 _ struct{} 后的结构体
type Q struct {
X, Y int
_ struct{} // 添加这个字段
}
// 现在只能这样初始化
q1 := Q{X: 1, Y: 1} // ✅ 编译通过
// 这样会报错
q2 := Q{1, 1} // ❌ 编译错误:too few values in struct initializer
到此这篇关于Golang 零值、空值与空结构的使用小结的文章就介绍到这了,更多相关Golang 零值、空值与空结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
