ホームページ  >  記事  >  バックエンド開発  >  Go でアドレス指定不可能なマップ値を変更するにはどうすればよいですか?

Go でアドレス指定不可能なマップ値を変更するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-24 01:17:14302ブラウズ

How to Modify Non-Addressable Map Values in Go?

Go でのマップ値の変更:「ペアに割り当てられません」エラーへの対処

Go で、「できる」というエラー メッセージが表示された場合マップ内のペアを変更しようとするときは、「割り当てない」という概念を理解することが重要です。アドレス可能性。

Go のマップ値はアドレス指定可能ではありません。つまり、ドット (.) 演算子を使用して値を直接割り当てることができません。これは、必要に応じてメモリ内で値を移動できる柔軟性をマップ実装に与えるための意図的な設計上の選択です。

ペアなど、アドレス指定できないマップ値を変更するには、次の 2 つのオプションがあります。

  1. マップ値としてポインターを使用する: マップ値をペアへのポインターとして定義することで、次のように値を変更できます。間接演算子 (*) を使用してポインターを逆参照します。
dict := make(map[string]*pair)
dict["xxoo"] = &pair{5.0, 2.0}
dict["xxoo"].b = 5.0
  1. 値をコピーまたは再割り当てします: マップ値を直接変更する代わりに、コピーして変更し、マップに再割り当てします。値を完全に新しい値に置き換えることもできます。
// Copy and modify
dict := make(map[string]pair)
dict["xxoo"] = pair{5.0, 2.0}
p := dict["xxoo"]
p.b = 5.0
dict["xxoo"] = p

// Replace the value
dict["xxoo"] = pair{5.0, 5.0}

アドレス可能性を理解し、これらの手法を使用することで、直接アドレス指定できないマップ値を効果的に変更できます。

以上がGo でアドレス指定不可能なマップ値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。