报告给方法接收器的赋值。

当您将值赋给方法接收器时,该值将不会反映在方法本身之外。 值将反映在来自同一方法的后续调用中。

示例:

package main

import "fmt"

type demo struct {
 Val int
}

func (d *demo) change() {
 d = nil // 对方法接收器的分配仅传播给被调用者,而不传播给调用者
 d.myVal()
}

func (d *demo) myVal() {
 fmt.Printf("my val: %#v\n", d)
}

func (d demo) change2() {
 d = demo{} // 对方法接收器的分配不会传播到其他调用
 d.myVal()
}

func (d *demo) change3() {
 d.Val = 3
 d.myVal()
}

func main() {
 d := &demo{}
 d.myVal()
 d.change()
 d.myVal()
 d.Val = 2
 d.change2()
 d.myVal()
 d.change3()
 d.myVal()
}