golang方法和函数的区别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package main import "fmt" type Person struct { Name string } //函数 //对于普通函数,接受者为值类型时,不能将指针类型的数据直接传递,反之亦然 func test01(p Person) { fmt.Println(p.Name) } //指针类型 func test02(p *Person) { fmt.Println(p.Name) } //对于方法,接受者为值类型时,可以直接用指针类型的变量调用方法,反之亦然 func (p Person) test03() { p.Name = "jack" fmt.Println( "test03() =" , p.Name) //jack } func (p *Person) test04() { p.Name = "mary" fmt.Println( "test04() =" , p.Name) //mary } func main() { //不管调用形式如何,真正决定是值拷贝还是地址拷贝,看这个方法是和哪种类型绑定的 //如果是和值类型绑定,则为值拷贝。如果是和指针类型绑定,则是地址拷贝 p := Person{ "tom" } test01(p) test02(&p) p.test03() fmt.Println( "main() =" , p.Name) //tom (&p).test04() fmt.Println( "main() =" , p.Name) //mary } |
__EOF__

本文作者:StarGazer
本文链接:https://www.cnblogs.com/PatrickStarGazer/p/15982589.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/PatrickStarGazer/p/15982589.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战