[解決済み] 地図をコピーするには?
2022-02-27 22:32:21
質問
マップの内容をコピーしようとしているのですが (
amap
) の中にある別のもの (
aSuperMap
をクリアしてください。
amap
次の反復/ループで新しい値を取得できるようにするためです。
問題は、マップをクリアできないことです。
をクリアすることなく、その参照先である
をスーパーマップの中に入れてください。
以下は擬似的なコードです。
for something := range fruits{
aMap := make(map[string]aStruct)
aSuperMap := make(map[string]map[string]aStruct)
for x := range something{
aMap[x] = aData
aSuperMap[y] = aMap
delete(aMap, x)
}
//save aSuperMap
saveASuperMap(something)
}
動的なものも試しましたが、明らかにエラーになります (nilに代入できません)
aSuperMap[y][x] = aData
問題は、どのようにすれば連想マップを作成できるかということです。PHPでは、単にaSuperMap[y][x] = aDataを使います。golangには明らかなメソッドがないようです。もし私が
delete(aMap, x)
スーパーマップからの参照も削除されます。もし削除しなければ、スーパーマップは重複したデータで終わります。基本的には、各ループで
aMap
に、新しい値とすべての古い値を加えたものです。
どのように解決するのですか?
地図をコピーしているのではなく、地図への参照をコピーしているのです。あなたの
delete
このように、元のマップとスーパーマップの両方の値を変更します。マップをコピーするためには
for
のようなループがあります。
for k,v := range originalMap {
newMap[k] = v
}
今はもう引退してしまったSOのドキュメントにあった例です。
// Create the original map
originalMap := make(map[string]int)
originalMap["one"] = 1
originalMap["two"] = 2
// Create the target map
targetMap := make(map[string]int)
// Copy from the original map to the target map
for key, value := range originalMap {
targetMap[key] = value
}
より抜粋 マップ - マップをコピーする . 原作者は JepZ . 帰属の詳細は 投稿者ページ . ソースは以下のライセンスで提供されています。 CC BY-SA 3.0 で見ることができます。 ドキュメント・アーカイブ . 参照トピックID:732、例題ID:9834。
関連
-
[解決済み] 文字列の先頭と末尾のホワイトスペースを削除するにはどうすればよいですか?
-
GOROOT に xxx というパッケージがないというエラーが GoLand から報告される
-
[解決済み] Goのペア/タプルデータ型
-
[解決済み] go言語でUUIDを生成する方法はありますか?
-
[解決済み] Goでマップにキーが含まれているかどうかを確認するには?
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み] Goで複数行の文字列はどのように書くのですか?
-
[解決済み] デュレーションと整数を掛け合わせる方法は?
-
[解決済み] 2枚のスライスの等価性を確認する
-
[解決済み】Goのタグはどのような用途に使われますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Notepad++ 用の Go 言語プラグイン
-
[解決済み] golang の "go get" コマンドで "go: missing Git command" というエラーが表示される。
-
GOROOT に xxx というパッケージがないというエラーが GoLand から報告される
-
[解決済み] このキャスティングはgolangで行われているのでしょうか?
-
[解決済み] Goテスト文字列が部分文字列を含む
-
[解決済み] パッケージ <package_name> を提供するモジュールの go.sum のエントリがありません。
-
[解決済み] Goにforeachループはあるのか?
-
[解決済み] 2枚のスライスの等価性を確認する
-
eclipse+goclipseプラグイン+gdbによるgo言語開発デバッグ環境の構築 ---最終起動シーケンスでのエラー MIコマンドの実行に失敗しました。
-
[解決済み】Goでディレクトリを一覧表示する