function - Go中的函数和方法有什么区别?

标签 function methods go

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

据我目前的理解:函数是“全局的”,这意味着我不必导入包来使用函数,它们总是存在的。方法绑定(bind)到包。这是正确的吗?

最佳答案

As far as I understand at the moment: functions are "global", which means I do not have to import a package to use functions, they are always there. Methods are bound to packages. Is this correct?

不,这是不正确的。 builtin 中只有几个函数始终可用的软件包。其他所有内容都需要导入。

“方法”一词是由面向对象编程提出的。在 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)

关于function - Go中的函数和方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263546/

相关文章:

c++ - 在函数c++中将变量作为默认参数传递

r - 使表格显示百分比而不是 R 中的频率

javascript - JS & Jquery : functions goes crazy after being called.

java - 如果调用matrix2.getElement(int y, int x),我应该在 getElement 方法中输入什么

go - 解码为接口(interface)类型

Golang 从文件中读取数据并指出缺失值

javascript - 在javascript中声明和定义函数

javascript - 不同条件下的 React 调用方法

go - 删除结构中 slice 的元素

go - 无法通过-extldflags