上級 › 値レシーバのメソッドは呼び出し元の値を変更しない › パターン4
値レシーバのメソッドは呼び出し元の値を変更しない
値レシーバで定義したメソッドは、レシーバのコピーに対して操作を行います。
1 package main 2 3 import "fmt" 4 5 type Tank struct{ Fuel int } 6 7 func (t ______) Fill() { t.Fuel += 30 } ^ 8 9 func main() { 10 t := Tank{Fuel: 20} 11 t.Fill() 12 fmt.Println(t.Fuel) 13 }
出力: 20
空欄を埋めて実行を通す
Fillの中でt.Fuelを増やしても、それは複製されたコピーへの変更であり、元のtには影響しません。
次の問題