代碼在這里:http://play.golang.org/p/koMmlbmwYk代碼:packagemainimport"fmt"typeHumanstruct{namestringageintphonestring}typeStudentstruct{Human//匿名字段schoolstring}typeEmployeestruct{Human//匿名字段companystring}//Human定義methodfunc(h*Human)SayHi(){fmt.Printf("Hi,Iam%syoucancallmeon%s\n",h.name,h.phone)}//Employee的method重寫Human的methodfunc(e*Employee)SayHi(){fmt.Printf("Hi,Iam%s,Iworkat%s.Callmeon%s\n",e.name,e.company,e.phone)//Yesyoucansplitinto2lineshere.}funcmain(){mark:=Student{Human{"Mark",25,"222-222-YYYY"},"MIT"}sam:=Employee{Human{"Sam",45,"111-888-XXXX"},"GolangInc"}mark.SayHi()sam.SayHi()}對于這句://Human定義methodfunc(h*Human)SayHi(){fmt.Printf("Hi,Iam%syoucancallmeon%s\n",h.name,h.phone)}//Employee的method重寫Human的methodfunc(e*Employee)SayHi(){fmt.Printf("Hi,Iam%s,Iworkat%s.Callmeon%s\n",e.name,e.company,e.phone)//Yesyoucansplitinto2lineshere.}receiver是指向Houman的指針,但如果我改成這樣://Human定義methodfunc(hHuman)SayHi(){fmt.Printf("Hi,Iam%syoucancallmeon%s\n",h.name,h.phone)}//Employee的method重寫Human的methodfunc(eEmployee)SayHi(){fmt.Printf("Hi,Iam%s,Iworkat%s.Callmeon%s\n",e.name,e.company,e.phone)//Yesyoucansplitinto2lineshere.}針向本身,結(jié)果輸出效果是一樣的。這是怎么回事呢?
Go method 指向receiver,指針或是本身怎么樣效果一樣?
慕桂英3389331
2019-04-08 11:19:15