Go中的方法集
摘要:
型別*T方法集
// code_018_struct_method_set project main.go
package main
import (
"fmt"
)
//型別*T方法集
type Person struct {
name string
...
型別*T方法集
// code_018_struct_method_set project main.go package main import ( "fmt" ) //型別*T方法集 type Person struct { name string sexbyte ageint } //指標作為接收者,引用語義 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 sexbyte ageint } 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) }