我已经阅读了函数和方法之间的区别。我已经阅读了一些关于堆栈溢出的先前答案。但是,我不明白为什么它们完全不同。根据我的理解:使用方法可以完成的事情也可以使用 Go 中的函数完成。我知道方法也是函数。为了进一步澄清我的问题,我添加了一个示例:
package main
import (
"fmt"
)
type Point struct {
a, b int
}
func (p *Point) sumM() int {
return p.a + p.b
}
func sumF(p *Point) int {
return p.a + p.b
}
func (p *Point) mulM(n int) int {
return (p.a + p.b) * n
}
func mulF(p *Point, n int) int {
return (p.a + p.b) * n
}
func main() {
p := Point{2, 3}
fmt.Println("sumM is: ", p.sumM())
fmt.Println("sumF is: ", sumF(&p))
fmt.Println("mulM is: ", p.mulM(2))
fmt.Println("mulF is: ", mulF(&p, 2))
}
在哪里 手机 和 女 分别代表方法和功能。
我想知道我是否遗漏了什么;如果这些不同的实现背后有一些真实的推理。例如每个的优点和缺点。
最佳答案
来自 Golang Methods 的一些提示:
The thumb of the rule is在以下情况下不定义方法:
关于function - Go中区分函数和方法的具体原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61049079/