方法:規定對象的行爲的。對象的行爲功能。
func (r recver) 方法名(參數列表) (返回值類型){....}
函數:一段獨立的功能,可以被直接調用
func 函數名(參數列表)(返回值類型){....}
函數名(實際參數)
r.方法名(實際參數)
package main import "fmt" //1.定義一個結構體 type Person struct { name string age int sex string } type Dog struct { sort string color string } // 2.定義一個方法 func (p Person) printInfo(){ // p-->p1 //可以直接操作Person類的這個對象,就是p fmt.Printf("姓名:%s,年齡:%d,性別:%s\n",p.name, p.age,p.sex) } func (d Dog)printInfo() { fmt.Printf("品種:%s,毛色:%s\n", d.sort,d.color) } func printInfo2(p Person) { fmt.Printf("姓名:%s,年齡:%d,性別:%s\n",p.name, p.age,p.sex) } func fun1(a, b int)int{ return a + b } func main() { /* 方法:method---->類的行爲功能。 接受者調用---> func (接受者) 方法名 (參數列表)(返回值列表){ //... } 函數:function 可以直接調用的 func 函數名(參數列表)(返回值列表){ } 方法和函數的區別: 函數是定義功能,一段代碼 方法的某個類別的行爲功能 方法由於接受者不同,方法名可以一直,但是函數不能。go中沒有函數重載 */ //1.創建一個對象 p1 := Person{"王二狗",28,"男"} p1.printInfo() p2 := Person{"李小花",18,"女"} p2.printInfo() d1 := Dog{"中華田園犬","土黃色"} d1.printInfo() d2:=Dog{"哈士奇","灰白色"} d2.printInfo() printInfo2(p1) // 函數調用 printInfo2(p2) // 函數調用 }