golang中给结构体或结构体指针绑定函数的区别

1.先创建一个结构体

type Test struct{

        name  string  //给结构体绑定一个字段,用以说明结构体和结构体指针绑定函数的区别

}

2.给结构体绑定函数

func (test Test) function(){

     test.name = "结构体"

}

3.给结构体指针绑定函数

func(test *Test) pointFunction(){

    test.name = "结构体指针"

}

4.在main方法中调用

func main(){

    test := &Test{"创建的"}   //同Java中的new Test("创建的"),返回实例对象的引用(地址)

    test.function()    //调用结构体函数,系统帮你转成(*test).function。

    fmt.Println("name = ",test.name)   // 打印 name = "创建的",因为是值传递,不修改name的实际值

 

   var test1 Test

    // java中对于只声明,没有关联内存地址的值会报空指针异常。golang不会。系统默认会转为(&test).pointFunction

    test1.pointFunction()

    fmt.Println("打印结构体指针绑定的方法")

    fmt.Println("name = ",test1.name) //name = "结构体指针",是引用传递会修改test.name的内容

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值