关于x,y = y,x的实现,以及method receiver的一些问题

agolangf · · 3338 次点击
Unknwon
Only those who attempt the absurd can achieve the impossible.
> 对于method receiver的类型到底用struct还是struct *,有没有什么最佳实践指导? 一般情况下我自己都是用的 `*Person`,如果你要对结构做出修改,就必须这么写。 如果你不对结构做出修改,然后结构包含的内容又是很少的:例如 type Person struct{ name string age int } name和age都不会很大,对它们的值拷贝一次的消耗可能要比拷贝指针再取值要小
#4
更多评论
Unknwon
Only those who attempt the absurd can achieve the impossible.
以下纯属个人见解: 1.此为 Go 的语法特性,应该是内部考虑到了这种情况,所以做了特殊处理。 2.根据你方法的定义,p1 和 p2 均是是整个 Person 结构做了一次拷贝。如果修改为 func (p *Person) Name() string { //blabla } 则是对 p 的地址进行拷贝,然后取值操作
#1
Unknwon
Only those who attempt the absurd can achieve the impossible.
这玩意代码渲染有问题。。 func (p *Person) Name() string { //blabla }
#2