golang中如果你定了一个struct
T,有个可以定义一个接收者为T的函数来使T更强大
但是T作为receiver
有两种形式:
一种是T本身,另一种是*T
,即T的指针形式
但作为T本身是 方法里的操作 相当于把 T 复制了一份出来
如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package main
import ( "fmt" ) func main() { var persion=Persion{Name:"Tom",Age:10} fmt.Println(persion) persion.Say("hello yahui") fmt.Println(persion) } type Persion struct { Name string Age int } func (p Persion) Say(word string) { p.Name="Jack" fmt.Println(p.Name,"Say",word) }
|
输出:
1 2 3 4
| {Tom 10} Jack Say hello yahui {Tom 10}
|
但作为*T是方法里的操作是真正的正在引用T
如以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package main
import ( "fmt" ) func main() { var persion=Persion{Name:"Tom",Age:10} fmt.Println(persion) persion.Say("hello yahui") fmt.Println(persion) } type Persion struct { Name string Age int } func (p *Persion) Say(word string) { p.Name="Jack" fmt.Println(p.Name,"Say",word) }
|
输出:
1 2 3
| {Tom 10} Jack Say hello yahui {Jack 10}
|