値の範囲を反復する場合、単にコピーを操作するのではなく、元の値を変更したいと思うのが一般的です。ただし、デフォルトでは、範囲構造は各値のコピーを返します。
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for _, e := range array { e.field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
上記のコードでは、範囲が値をコピーするため、配列内の各要素の「field」フィールドは変更されません。 e 変数。
元の値を変更するには、範囲構造を使用して値を反復処理することはできません。代わりに、配列インデックスを使用する必要があります。
package main import "fmt" type MyType struct { field string } func main() { var array [10]MyType for idx, _ := range array { array[idx].field = "foo" } for _, e := range array { fmt.Println(e.field) fmt.Println("--") } }
配列インデックスを使用すると、配列内の元の値に直接アクセスし、必要に応じて値を変更できます。
以上がGo で範囲反復中に元の値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。