go語音之進階篇方法表達式
阿新 • • 發佈:2019-01-10
person 字符類 amp 字符 隱藏 性別 類型 imp struct
1、方法表達式
示例:
package main import "fmt" type Person struct { name string //名字 sex byte //性別, 字符類型 age int //年齡 } func (p Person) SetInfoValue() { fmt.Printf("SetInfoValue: %p, %v\n", &p, p) } func (p *Person) SetInfoPointer() { fmt.Printf("SetInfoPointer: %p, %v\n", p, p) } func main() { p := Person{"mike", ‘m‘, 18} fmt.Printf("main: %p, %v\n", &p, p) //方法值 f := p.SetInfoPointer //隱藏了接收者 //方法表達式 f := (*Person).SetInfoPointer f(&p) //顯式把接收者傳遞過去 ====》 p.SetInfoPointer() f2 := (Person).SetInfoValue f2(p) //顯式把接收者傳遞過去 ====》 p.SetInfoValue() }
執行結果:
main: 0xc00005a400, {mike 109 18} SetInfoPointer: 0xc00005a400, &{mike 109 18} SetInfoValue: 0xc00005a480, {mike 109 18}
go語音之進階篇方法表達式