Inspectopedia Help

Assignment to a receiver

Reports assignments to method receivers.

When you assign a value to the method receiver, the value will not be reflected outside of the method itself. Values will be reflected in subsequent calls from the same method.

Example:

package main import "fmt" type demo struct { Val int } func (d *demo) change() { d = nil // Assignment to the method receiver propagates only to callees but not to callers d.myVal() } func (d *demo) myVal() { fmt.Printf("my val: %#v\n", d) } func (d demo) change2() { d = demo{} // Assignment to the method receiver doesn't propagate to other calls 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() }

Inspection Details

Available in:

GoLand 2023.3

Plugin:

Go, 233.SNAPSHOT

Last modified: 13 July 2023