Go中的functions 和 methods有什么区别?
技术问答
249 人阅读
|
0 人回复
|
2023-09-12
|
根据我目前的理解:函数是全局的,这意味着我不需要导入包来使用函数,它们总是存在的。方法绑定到包中。这是对的吗?7 j8 _4 b' S3 F7 ^/ a }$ |" _" ]
: ?5 f+ f8 v, _
解决方案:
. [. v, n6 ~; v4 M. z; M: n 根据我目前的理解:函数是全局的,这意味着我不需要导入包来使用函数,它们总是存在的。方法绑定到包中。这是对的吗?
$ h2 C* m; x* b5 c$ g( m( f- O: P不,这是不正确的。内置包中只有几个函数总是可用的。其他一切都需要导入。
2 V* q c4 F' b2 z! Q% Y" ?在面向对象编程中提出了术语方法。OOP 语言(如 C )中,您可以定义一个包装在一起的数据和函数的类。类中的函数称为方法,您需要此类实例来调用此方法。6 Y8 g# a1 o& a* t
在 Go 中,术语基本相同,尽管 Go 不是经典意义上的 OOP 语言Go在 中,接收者的函数通常被称为方法(可能只是因为人们仍然习惯 OOP 术语)。0 v7 R# k0 u5 B( R& N9 P
例如:! e& S) _: { p* i2 `, e5 f) V( y
func MyFunction(a,b int) int { return a b}// Usage:// MyFunction(1,2)
6 B0 [5 r( ^& X/ i0 j 但6 d; ]$ t+ u4 g8 f0 \1 t
type MyInteger intfunc (a MyInteger) MyMethod(b int) int { return a b}// Usage:// var x MyInteger = 1// x.MyMethod(2)
1 V) ~: K d! o0 a( t6 q$ Y! p |
|
|
|
|
|