回答

收藏

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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则