上級 › 値レシーバのメソッドは呼び出し元の値を変更しない › パターン2
値レシーバのメソッドは呼び出し元の値を変更しない
値レシーバで定義したメソッドは、レシーバのコピーに対して操作を行います。
1 package main 2 3 import "fmt" 4 5 type Wallet struct{ Balance int } 6 7 func (w ________) Deposit() { w.Balance += 10 } ^ 8 9 func main() { 10 w := Wallet{Balance: 100} 11 w.Deposit() 12 fmt.Println(w.Balance) 13 }
出力: 100
空欄を埋めて実行を通す
Depositが値レシーバだと、メソッド内で加算した結果は呼び出し元のwに反映されず、常に元の値のままです。
次の問題