为了账号安全,请及时绑定邮箱和手机立即绑定

不同的指针是否相等?

不同的指针是否相等?

Go
慕雪6442864 2021-08-16 16:08:47
我试图将二维平面上的一些点表示为整数对。我希望这些点是不可变的(按值传递),而且每个点都具有唯一的标识。为了实现这一点,我用两个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
提交
取消
意见反馈 帮助中心 APP下载
官方微信