我正在尝试开始使用Go,并且文档非常好。我在文档中找不到的是函数和方法之间的区别。
据我目前的了解:函数是“全局”的,这意味着我不必导入包即可使用函数,它们始终存在。方法绑定到包。这样对吗?
不,那是不正确的。内置软件包中只有几个功能始终可用。其他所有内容都需要导入。
术语“方法”是面向对象的编程。在OOP语言中(例如C ++),您可以定义一个“类”,该类封装了属于同一类的数据和函数。类中的那些函数称为“方法”,您需要该类的实例才能调用这种方法。
在Go中,术语基本相同,尽管Go不是经典意义上的OOP语言。在Go中,接收器的函数通常称为方法(可能只是因为人们仍然习惯于OOP的术语)。
因此,例如:
func MyFunction(a, b int) int { return a + b } // Usage: // MyFunction(1, 2)
但
type MyInteger int func (a MyInteger) MyMethod(b int) int { return a + b } // Usage: // var x MyInteger = 1 // x.MyMethod(2)