整體類似,區別是 函數屬於包,通過包調用,方法屬於結構體,通過結構體變量調用
方法定義 : 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的面向對象編程。對象僅僅是一個有方法的值或者變量。