我有两个接口(interface)对象,我想相互比较。我不仅想比较它们的值是否相同,我还想知道这两个接口(interface)是否引用了同一个对象,或者它们是否引用了两个具有相同值的不同对象。
有没有办法从接口(interface)对象中提取接口(interface)引用的地址?然后我可以比较这两个地址来知道这两个接口(interface)是否引用了同一个对象。
最佳答案
如果两个接口(interface)都有指针值,那么您可以简单地比较它们:
func cmp(v1, v2 interface{}) bool {
return v1==v2
}
func main() {
a:=1
b:=1
c:=&a
cmp(&a,&b) // false
cmp(a, b) // true, compare values
cmp(c, &a) // true
}
关于go - 如何获取接口(interface)引用的对象的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63911178/