整体类似,区别是 函数属于包,通过包调用,方法属于结构体,通过结构体变量调用
方法定义 : func (变量名 结构体类型) methodName(参数列表)(返回值列表){}
函数定义 : func methodName(参数列表)(返回值列表){}
调用方法时就把调用者赋值给接收者.(方法中的变量名)
方法实例:
type A struct {
Name string
}
func (a A)foo() { //接收者写在函数名前面的括号里面
fmt.Println("foo")
}
func main() {
a := A{}
a.foo() //foo
}
函数实例:
func Add(a ,b int){ //函数
fmt.Println(a+b)
}
func (a int) Add (b myInt){ //方法
fmt.Println(a+b)
}
func main() {
a, b := 3,4
var aa,bb myInt = 3,4
Add(a,b)
aa.Add(bb)
}
这样设计主要是为了go的面向对象编程。对象仅仅是一个有方法的值或者变量。