Go中的方法集
阿新 • • 發佈:2018-10-06
n) per eth code byte pointer 指針 amp struct 類型*T方法集
// code_018_struct_method_set project main.go package main import ( "fmt" ) //類型*T方法集 type Person struct { name string sex byte age int } //指針作為接收者,引用語義 func (p *Person) SetInfoPointer() { (*p).name = "yoyo" p.sex = ‘f‘ p.age = 22 } //值作為接收者,值語義 func (p Person) SetInfoValue() { p.name = "xxx" p.sex = ‘m‘ p.age = 33 } func main() { //p 為指針類型 var p *Person = &Person{"mike", ‘m‘, 18} p.SetInfoPointer() //func (p) SetInfoPointer() fmt.Println(p) p.SetInfoValue() //func (*p) SetInfoValue() fmt.Println(p) (*p).SetInfoValue() //func (*p) SetInfoValue() fmt.Println(p) }
類型T的方法集
// code_018_struct_method_set2 project main.go package main import ( "fmt" ) //類型T方法集 type Person struct { name string sex byte age int } func (p *Person) SetInfoPointer() { (*p).name = "yoyo" p.sex = ‘f‘ p.age = 22 } func (p Person) SetInfoValue() { p.name = "xxx" p.sex = ‘m‘ p.age = 33 } func main() { //p為普通類型 var p Person = Person{"ck_go", ‘m‘, 18} (&p).SetInfoPointer() p.SetInfoPointer() p.SetInfoValue() (&p).SetInfoValue() fmt.Println(p) }
Go中的方法集