マップ内の構造体フィールドへの代入
のフィールドを変更しようとすると、「マップ内の構造体フィールドに代入できません」というエラーが発生しますマップ内に格納される構造体。この制限は、Go におけるマップのキーと値の不変性に起因します。
提供された例では、スナップショット := make(map[string] Snapshot, 1) は、string 型のキーと type の値を使用してマップを作成します。スナップショット。スナップショットは構造体です。スナップショット値内のユーザー スライスを変更するには、適切な手順に従う必要があります。
次のアプローチにより、ユーザー スライスが正しく変更されることが保証されます。
func main() { snapshots := make(map[string]Snapshot, 1) snapshots["test"] = Snapshot{ Key: "testVal", Users: make([]Users, 0), } // Get a copy of the 'Users' slice users := snapshots["test"].Users // Append user to the copy users = append(users, user) // Reassign the map entry snapshots["test"].Users = users }
' のコピーを取得することにより、ユーザーのスライスを変更し、変更したコピーをマップ エントリに再割り当てできます。このアプローチは、マップの不変性に準拠します。
以上がGo マップの構造体フィールドに代入できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。