在下面的例子中,我检查两个指针的相等性
指针指向相同的地址
它们不是同一个指针
如何检查两个指针是否指向同一个地址?我不希望检查两个指针的内容是相同的.
package main import ( "fmt" ) type Map struct {} type Fragment struct { Map *Map } func (m1 Map) NewFragment() (f Fragment) { f.Map = &m1 return } var m Map = Map {} func main() { f := m.NewFragment() fmt.Println(f.Map == &m) // false fmt.Println(*f.Map == m) // true }
去游乐场
正如JimB回答的那样,你可以==
用来比较指针.此程序的行为方式是因为当您调用该NewFragment
方法时,会复制接收器.在这种情况下,这意味着该行f.Map = &m1
正在获取副本的地址,而不是原始对象.因此,指针是不同的(f.Map != &m
),并且值是相同的(*f.Map == m
).