好吧,我不得不承认,我根本没有真正使用Go,但我确实只是观察到一些令我感到奇怪的东西,因为一种力求极简的语言和Go所做的所有好东西.如果背后没有合法的理由我会感到惊讶,所以这就是我在寻找的东西.
所以当你有一个方法时,你可以像这样定义它:
func (s *SomeStruct) Foo(x int) { }
Run Code Online (Sandbox Code Playgroud)
但为什么有一个额外的参数列表只是为了"接收器",因为我认为它被称为?它不会是一个更简单,更优雅的设计
func Foo(s *SomeStruct, x int) { }
Run Code Online (Sandbox Code Playgroud)
然后s.Foo(5)只是被转换为对函数的调用Foo(s, 5)?
go ×1