go - 如何获取接口(interface)引用的对象的地址

标签 go pointers types

我有两个接口(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/

相关文章:

c++ - 删除 getenv() 返回的字符数组

C++:如何创建多类型和多维数组格式?

arrays - GoLang 字符串为空

sql - PostgreSQL "?"参数占位符不适用于 "WITH"

go - 如何从此请求中获取 POST 值?

Python总和,为什么不是字符串?

c# - 在 C# 中获取动态类型的最大值

go - 如何使用 Go 创建类似 Python 的字典?

c - 获取C中数字的所有除数

c++ - 你怎么解释 *(y_ptr)&val;