go - 避免空结构使用相同的地址
问题描述
为了在 Go 中使用更多有用的枚举,我尝试使用 struct 指针作为枚举值。如果结构有字段,这很好用,但对于空结构,我有时会多次获得相同的指针,无论我使用&Foo{}
还是new(Foo)
.
有什么办法可以强制指针不同吗?
这就是我想要做的(在线尝试):
package main
type Foo struct{}
var FooValues = struct {
Alpha *Foo
Bravo *Foo
Charlie *Foo
}{
Alpha: &Foo{}, // These pointers should all be different
Bravo: &Foo{}, // But sometimes
Charlie: &Foo{}, // They are not
}
func main() {
if FooValues.Alpha == FooValues.Charlie {
panic("enum values are the same!")
}
}
解决方案
推荐阅读
- java - Android 用户登录与改造
- redirect - 如何使用 .Htaccess 将移动版本重定向到计算机版本
- javascript - 试图在 TypeScript 中找到 if/else 语句的动态替代方案
- python - 数据基数是 Keras 中的模棱两可的错误
- function - 识别给定包/文件中的函数
- git - VS 代码源控制充满垃圾文件
- scala - 如何将单片眼镜库添加到我的 scala 项目中?
- python - 当尝试提取偶数值时,我不断收到 typeError: 'int' object is not iterable whn tryoing
- git - 当该分支上有一个开放的拉取请求时,我可以将我的分支与主分支合并吗?
- css - 用于创建气球作为提示的 CSS