回答

收藏

Go中的functions 和 methods有什么区别?

技术问答 技术问答 299 人阅读 | 0 人回复 | 2023-09-12

根据我目前的理解:函数是全局的,这意味着我不需要导入包来使用函数,它们总是存在的。方法绑定到包中。这是对的吗?  d5 }1 {) ?3 |4 Z, C
                                                               
6 M! m1 I+ c& Y4 c    解决方案:                                                                5 `; C( G, M" G, `) f
                                                                根据我目前的理解:函数是全局的,这意味着我不需要导入包来使用函数,它们总是存在的。方法绑定到包中。这是对的吗?' T# {2 d7 u6 Y# V. B1 u7 v
不,这是不正确的。内置包中只有几个函数总是可用的。其他一切都需要导入。8 }0 L7 j- |) ^6 f8 }4 e7 f- V
在面向对象编程中提出了术语方法。OOP 语言(如 C  )中,您可以定义一个包装在一起的数据和函数的类。类中的函数称为方法,您需要此类实例来调用此方法。
3 ^4 q/ _( G" u! }在 Go 中,术语基本相同,尽管 Go  不是经典意义上的  OOP 语言Go在 中,接收者的函数通常被称为方法(可能只是因为人们仍然习惯 OOP 术语)。
7 n( T* z8 E8 p  m例如:; v, `4 n/ u& w0 O& C
    func MyFunction(a,b int) int {  return a   b}// Usage:// MyFunction(1,2)7 V7 V& v; u9 K3 W8 j/ c0 k

" z* d* p" u% f0 X3 b" E7 r  u
    type MyInteger intfunc (a MyInteger) MyMethod(b int) int {  return a   b}// Usage:// var x MyInteger = 1// x.MyMethod(2)+ Z- B- P$ V0 s* l4 S( E. d
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则