分析
由此大胆的假设, GO在将方法绑定到结构体的时候, 根据接收的结构体类型不同(值或指针), 会将方法绑定到不同的类型变量上, 也就是说, 指针类型只能调用指针类型的方法, 值类型只能调用值类型的方法...假设推翻, GO方法的绑定规则应该是(网上搜了搜, 发现这玩意叫 GO 的方法集):
指针类型拥有 值/指针 的方法
值类型只拥有值类型的方法
那么问题来了, 我平常写的时候, 是这样的, 就不会报错呀..., 其指针变量却会创建副本传进来....所以可以这样理解, 不管你是指针类型还是值类型, GO 在函数传参的时候, 都会对该内容创建一个副本进行传递....那也就意味着, 如果传的是一个较大的对象, 进行值的传递, 会将整个对象全拷贝一份, 然后传递过去, 而传递指针只需要拷贝8字节的指针数据就可以了,
不过如果传入了指针类型, 就要直面在方法内部可能会对对象进行修改的风险