上級 › 値レシーバのメソッドは呼び出し元の値を変更しない › パターン3
値レシーバのメソッドは呼び出し元の値を変更しない
値レシーバで定義したメソッドは、レシーバのコピーに対して操作を行います。
1 package main 2 3 import "fmt" 4 5 type Score struct{ Points int } 6 7 func (s _______) Add() { s.Points += 5 } ^ 8 9 func main() { 10 s := Score{Points: 0} 11 s.Add() 12 fmt.Println(s.Points) 13 }
出力: 0
空欄を埋めて実行を通す
メソッド呼び出しのたびに構造体全体がコピーされるため、値レシーバでは呼び出し元に変更が伝わりません。
次の問題