回答

收藏

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

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

根据我目前的理解:函数是全局的,这意味着我不需要导入包来使用函数,它们总是存在的。方法绑定到包中。这是对的吗?
5 `( r% ^  z. U6 F, `                                                               
" n$ ?8 `- P4 L/ E) n! B    解决方案:                                                                1 ^2 t7 |1 w0 S7 Z
                                                                根据我目前的理解:函数是全局的,这意味着我不需要导入包来使用函数,它们总是存在的。方法绑定到包中。这是对的吗?
3 |" ]. P, E/ x# S5 A不,这是不正确的。内置包中只有几个函数总是可用的。其他一切都需要导入。/ N9 k4 m4 ~) x; j; m1 T9 \: S
在面向对象编程中提出了术语方法。OOP 语言(如 C  )中,您可以定义一个包装在一起的数据和函数的类。类中的函数称为方法,您需要此类实例来调用此方法。
! `! j* \6 a8 D, D! A5 B0 i. X+ J在 Go 中,术语基本相同,尽管 Go  不是经典意义上的  OOP 语言Go在 中,接收者的函数通常被称为方法(可能只是因为人们仍然习惯 OOP 术语)。
; x8 w- @6 a+ r例如:
0 P: K" F8 m( D3 r
    func MyFunction(a,b int) int {  return a   b}// Usage:// MyFunction(1,2)
    # @# B) s# I+ K" k! b
. e9 I. U4 C3 ~2 ]" e( d# M1 n1 Y
    type MyInteger intfunc (a MyInteger) MyMethod(b int) int {  return a   b}// Usage:// var x MyInteger = 1// x.MyMethod(2)
    * M3 ]0 @& a* i& \& m; A
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则