Golang方法和接口行为总结

1.go参数/变量传递是值传递,会发生拷贝,包括在传递指针时,也会发生指针的拷贝.
2.值的"方法集"会被其指针继承.
3.值调用指针接收方法时,方法会获得指针的副本,修改会改变原值; 指针调用值接收方法时,方法会获得值副本,修改不会改变原值.(实际上,分别发生了"由值找指针"和"由指针找值"的过程,由go隐式完成.)
4.值的"方法集"实现了接口,那么其指针也实现了该接口(此时接口可接收其值和指针); 指针"方法集"实现了接口,其值并没实现该接口(此时接口只能接收其指针).
5.接口由tab指针(类型&方法表)和data指针(指向具体值的指针)组成.
6.接口接收值时,先传递拷贝,得到值副本,接口会存储该值副本的指针;接口接收指针时,先传递拷贝,得到指针的副本,然后直接存储这个指针副本.(测试验证时,不要用空结构体,因涉及到编译器主动优化,得到的结论会不一致.)
7.通过接口调用指针接收方法和值接收方法的行为,与第3条中一致.

posted @ 2025-06-26 14:15  CJTARRR  阅读(9)  评论(0)    收藏  举报