结构体定义中‘do not compare’标记类型及[0]func()含义解析
Go结构体中“do not compare”标记的类型说明
首先明确:[0]func()不是零长度切片,它是一个长度为0的数组类型,其元素类型是无参数无返回值的函数类型func()。
为什么用它实现“禁止比较”的效果?
- Go语言中,函数类型属于不可比较类型(仅能与
nil做比较),如果结构体包含不可比较类型的字段,整个结构体也会被视为不可比较,无法使用==或!=进行比较操作。 - 长度为0的数组
[0]func()不会占用任何内存空间,不会增加结构体的内存开销;同时作为匿名字段(用_命名),实例化结构体时无需手动赋值,会自动初始化为该类型的零值。
内容的提问来源于stack exchange,提问作者vtm11
相关产品推荐
相关产品推荐

