go语言基础 结构体的 类型和拷贝

结构体的类型:值类型
默认是深拷贝

结构体指针

package main

import "fmt"

type person2 struct {
   name string
   age int
}

func main()  {
   /*
   深拷贝:
      值类型:拷贝数据
   浅拷贝:
      拷贝地址-->指针

   结构体:
      值类型:
         p1 := person{.....}
      浅拷贝:
         指针:
            p2:=new(person)
            p3:= &p1
    */
    p1 := person2{"王二狗",30}
    fmt.Printf("%p\n", &p1) //0xc0420023e0
    p2 := p1 //值类型,深拷贝
    fmt.Printf("%p\n",&p2)
    p2.name="王二狗狗"
    fmt.Println(p1)
    fmt.Println(p2)

    //定义一个指针,浅拷贝
    p3:= &p1 // 将p1的地址给p3
    fmt.Printf("%T\n", p3) //*main.person2
   p3.name ="李小花"
   fmt.Println(p1)
   fmt.Println(p3)
   fmt.Println(*p3)

   p4 := new(person2) // 指针
   fmt.Printf("%T\n",p4) //*main.person2
   p4.name="rose"
   p4.age = 30
   fmt.Println(*p4) //
   fmt.Printf("%p,%p\n", &p4, p4) //0xc042062020,0xc04203e4a0
   p6:=p4 //
   p6.name = "jack"
   fmt.Println(p4)
   fmt.Println(p6)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值