Go マップの構造体フィールドに代入できないのはなぜですか?

Patricia Arquette
リリース: 2024-11-13 17:00:02
オリジナル
608 人が閲覧しました

Why Can't I Assign to a Struct Field in a Go Map?

マップ内の構造体フィールドへの代入

のフィールドを変更しようとすると、「マップ内の構造体フィールドに代入できません」というエラーが発生しますマップ内に格納される構造体。この制限は、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート