美文网首页
Golang复制结构体

Golang复制结构体

作者: MrCloudPeak | 来源:发表于2019-10-01 14:01 被阅读0次

    Golang中复制结构体,可以使用赋值语句

    package main
    
    import (
        "fmt"
    )
    
    type Dog struct {
        age  int
        name string
    }
    
    func main() {
        roger := Dog{5, "Roger"}
        mydog := roger
        fmt.Printf("roger addr %p\n", &roger)
        fmt.Printf("mydog addr %p\n", &mydog)
        fmt.Println("Roger and mydog are equal structs?", roger == mydog)
        mydog.name = "piggie"
        fmt.Println("Roger and mydog are equal structs?", roger == mydog)
    }
    

    执行结果

    roger addr 0xc000092000
    mydog addr 0xc000092020
    Roger and mydog are equal structs? true
    Roger and mydog are equal structs? false
    
    

    可以看出,roger跟mydog在内存中的地址不同。并且对mydog修改属性,对roger没有影响。
    但是注意,这里的Dog结构体中的属性,都是值类型。如果是引用类型的话,复制的是指针,而不是具体的值。所以通过赋值语句对结构体的拷贝,是浅拷贝。如需对引用类型属性进行深拷贝,可以通过手动创建的方式,或者使用实现了deepcopy功能的第三方包

    相关文章

      网友评论

          本文标题:Golang复制结构体

          本文链接:https://www.haomeiwen.com/subject/txukpctx.html