• 欢迎访问周知博客,每周记录新知识
  • 祝各位学得开心!!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

golang的深度拷贝和浅拷贝

工作技术 admin 2年前 (2022-08-02) 406次浏览 0个评论
  1. package main
  2.  
  3. import “fmt”
  4.  
  5. type Per struct {
  6.    name string
  7.    age int
  8.    sex string
  9.    address string
  10. }
  11.  
  12. func main(){
  13.  
  14.    var p Per
  15.    p.name = “小花”
  16.    p.age = 20
  17.    p.sex = “女”
  18.    p.address = “山东省”
  19.    fmt.Printf(“姓名:%s, 年龄:%d,性别:%s, 地址:%s\n”, p.name,p.age,p.sex,p.address)
  20.  
  21.  
  22.    //深拷贝 : 不会改变原值
  23.    p7 := p
  24.    p7.name=“爱情”
  25.    fmt.Println(p7)
  26.    fmt.Printf(“p7的数据是:%T,%p\n”,p7,&p7)
  27.  
  28.    fmt.Println(p)
  29.    fmt.Printf(“p的数据是:%T,%p\n”,p,&p)
  30.  
  31.    fmt.Println(“————————————“)
  32.    //浅拷贝 : 用的地址所以会改变原值
  33.    var pp1 *Per
  34.    pp1 = &p
  35.    fmt.Println(“asdasdas”,pp1)
  36.    pp1.name = “忙码字”
  37.    fmt.Println(p)
  38.    fmt.Printf(“pp1的数据是:%T,%p,%p\n”,pp1,pp1)
  39. }

 

打印结果:

姓名:小花, 年龄:20,性别:女, 地址:山东省
{爱情 20 女 山东省}
p7的数据是:controller.Per,0xc0004f5100
{小花 20 女 山东省}
p的数据是:controller.Per,0xc0004f50c0
————————————
asdasdas &{小花 20 女 山东省}
{忙码字 20 女 山东省}
pp1的数据是:*controller.Per,0xc0004f50c0


周知博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:golang的深度拷贝和浅拷贝
喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址