Я читал о том, в чем разница между функциями и методами. Я прошел через несколько предыдущих ответов о переполнении стека. Однако я не мог понять, почему именно они остаются разными. Насколько я понимаю: все, что можно сделать с помощью методов, можно также сделать с помощью функций из 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))
}
, где M и F представляют метод и функцию соответственно.
I хочу знать, что я что-то упустил; если есть некоторые аутентичные c аргументы в пользу этих различных реализаций. например плюсы и минусы для каждого.