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 rfunc 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 |
|
|
|
|
|