我试图将二维平面上的一些点表示为整数对。我希望这些点是不可变的(按值传递),而且每个点都具有唯一的标识。为了实现这一点,我用两个ints 和一个*string. 这工作正常:package mainimport "fmt"func main() { s1 := "" s2 := "" p := Point{1,2,&s1} p2 := Point{1,2,&s2} fmt.Println(p2==p) // want false}type Point struct{X int; Y int; id *string}$ go run a.gofalse由于string实际上并没有用于任何事情(我只关心判断两个点是否相同),因此创建像这样的唯一引用的规范解决方案似乎是使用指向的指针struct{}:package mainimport "fmt"func main() { s1 := struct{}{} s2 := struct{}{} p := Point{1,2,&s1} p2 := Point{1,2,&s2} fmt.Println(p2==p) // want false}type Point struct{X int; Y int; id *struct{}}但是,现在两个指针相等:$ go run a.gotrue为什么?字符串也会发生这种情况吗?我应该改用 UUID 吗?
2 回答
- 2 回答
- 0 关注
- 250 浏览
添加回答
举报
0/150
提交
取消