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

不同的指针是否相等?

不同的指针是否相等?

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 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号