开发者社区> 问答> 正文

在Golang中Python的“id”函数的等价是什么?

在Golang中Python的“id”函数的等价是什么? 在Python中,我通常使用id来比较两个对象是否相同(通过交叉标记它们的“id”是否相同)。当然也有例外——比如有时在PyTorch张量中,但大多数情况下是这样的)。 同样在Golang,我发现你可以使用这个答案中提到的函数,它是DeepEqual。但是我想知道在Python中是否有一个等价的id, tbh是一个非常方便的函数。 问题来源StackOverflow 地址:/questions/59384835/what-is-the-equivalent-of-id-function-of-python-in-golang

展开
收起
kun坤 2019-12-26 14:29:26 612 0
2 条回答
写回答
取消 提交回答
  • 代码改变世界,我们改变代码

    python中id()是查看变量内存地址的。

    golang中 &var &符号在变量前,还标识取地址。

    2020-03-17 15:06:48
    赞同 展开评论 打赏
  • @satoru发布:

    package main
    
    import "fmt"
    
    func main() {
        i := 32
        j := 32
        fmt.Printf("%p is %p\n", &i, &i)
        fmt.Printf("%p is not %p\n", &i, &j)
    }
    

    输出:

    0xc000016100 is 0xc000016100
    0xc000016100 is not 0xc000016108
    

    操场上:https://play.golang.org/p/nXAEJeImeXa 然而,

    package main
    
    import "fmt"
    
    func main() {
        i := 32
        j := 32
        fmt.Printf("i %p is i %p; i == i %t\n", &i, &i, &i == &i)
        fmt.Printf("i %p is not j %p; i == j %t\n", &i, &j, &i == &j)
    
        fmt.Println()
    
        var v struct {
            i struct{}
            j struct{}
        }
        fmt.Printf("i %p is i %p; i == i %t\n", &v.i, &v.i, &v.i == &v.i)
        fmt.Printf("i %p is not j %p; i == j %t\n", &v.i, &v.j, &v.i == &v.j)
    }
    

    输出:

    i 0x40e020 is i 0x40e020; i == i true
    i 0x40e020 is not j 0x40e024; i == j false
    
    i 0x1e52bc is i 0x1e52bc; i == i true
    i 0x1e52bc is not j 0x1e52bc; i == j true
    

    操场上:https://play.golang.org/p/Wv814ZgPCul

    2019-12-26 14:29:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载