据我目前的理解:函数是“全局的”,这意味着我不必导入包来使用函数,它们总是存在的。方法绑定到包。这个对吗?
不,那是不正确的。内置包中只有几个函数始终可用。其他一切都需要导入。
术语“方法”是在面向对象编程中提出的。在 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)