代码之家  ›  专栏  ›  技术社区  ›  Salim Fadhley

如何复制golang中的结构?

go
  •  -3
  • Salim Fadhley  · 技术社区  · 8 年前

    我想复制一个对象,这样我就有两个相同的对象,具有两个不同的内存地址。我的第一次尝试失败了:

    aa := a
    assert.NotEqual(t, &a, &aa, "Copied items should not be the same object.") // Test fails
    

    我可以修复这个以便它真正执行结构的副本吗?这个结构没有什么特别之处。

    1 回复  |  直到 8 年前
        1
  •  5
  •   maerics    8 年前

    type Person struct{
      Name string
      Age  int
    }
    
    alice1 := Person{"Alice", 30}
    alice2 := alice1
    fmt.Println(alice1 == alice2)   // => true, they have the same field values
    fmt.Println(&alice1 == &alice2) // => false, they have different addresses
    
    alice2.Age += 10
    fmt.Println(alice1 == alice2)   // => false, now they have different field values