一尘不染

Go中的功能和方法有何不同?

go

我正在尝试开始使用Go,并且文档非常好。我在文档中找不到的是函数和方法之间的区别。

据我目前的了解:函数是“全局”的,这意味着我不必导入包即可使用函数,它们始终存在。方法绑定到包。这样对吗?


阅读 258

收藏
2020-07-02

共1个答案

一尘不染

据我目前的了解:函数是“全局”的,这意味着我不必导入包即可使用函数,它们始终存在。方法绑定到包。这样对吗?

不,那是不正确的。内置软件包中只有几个功能始终可用。其他所有内容都需要导入。

术语“方法”是面向对象的编程。在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)
2020-07-02