golang中函數和方法區別

整體類似,區別是 函數屬於包,通過包調用,方法屬於結構體,通過結構體變量調用

方法定義 :     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的面向對象編程。對象僅僅是一個有方法的值或者變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章