美文网首页
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复制结构体

    Golang中复制结构体,可以使用赋值语句 执行结果 可以看出,roger跟mydog在内存中的地址不同。并且对m...

  • Learn Golang In Day 9

    Learn Golang In Day 9 简介 结构体是自定义的数据结构 定义结构体 package main ...

  • golang 结构体

     一个结构体类型可以包含若干个字段,也可以不包含任何字段。空结构体可以关联上一些方法,从而看成是函数的特殊版本。 ...

  • Golang:结构体

    结构体 结构体(struct)是用户自定义的类型,代表若干字段的集合。有时将多个数据看做一个整体要比单独使用这些数...

  • Golang结构体

    C++中结构体(struct)和类(class)的主要区别有: struct没有权限控制字段 struct没有方法...

  • golang结构体

    定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 ...

  • Golang 结构体

    继承

  • golang 加载jison而无需定义一堆结构体

    golang 加载jison而无需定义一堆结构体

  • 知识分享之Golang——gorm的结构体常用标签

    知识分享之Golang——gorm的结构体常用标签 背景 知识分享之Golang篇是我在日常使用Golang时学习...

  • Go核心编程-面向对象 [OOP]

    Golang也是支持面向对象(OOP)编程特性的语言,但是Golang中没有类(class),而Go语言的结构体(...

网友评论

      本文标题:Golang复制结构体

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