[解決済み] 範囲ループ内で選択されたキーをmapから削除しても安全ですか?
2022-04-21 09:19:03
質問
マップから選択したキーを削除するにはどうすればよいですか?
また
delete()
は、以下のコードのように、range と共に使用されるのでしょうか?
package main
import "fmt"
type Info struct {
value string
}
func main() {
table := make(map[string]*Info)
for i := 0; i < 10; i++ {
str := fmt.Sprintf("%v", i)
table[str] = &Info{str}
}
for key, value := range table {
fmt.Printf("deleting %v=>%v\n", key, value.value)
delete(table, key)
}
}
https://play.golang.org/p/u1vufvEjSw
解決方法は?
これは安全です また、同様のサンプルは 効果的な囲碁 :
for key := range m {
if key.expired() {
delete(m, key)
}
}
そして 言語仕様 :
マップに対する反復処理の順序は指定されておらず、反復処理ごとに同じであることは保証されていない。もし、まだ到達していないマップエントリーが イテレーション中に削除される の場合、対応するイテレーション値は生成されない。もしマップエントリーが イテレーション中に作成された の場合、そのエントリはイテレーション中に生成されるか、またはスキップされる可能性があります。この選択は、作成された各エントリや反復処理ごとに異なる可能性があります。マップがnilの場合、反復の回数は0である。
関連
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] 些細なキーの場合、unordered_mapよりもmapを使用する利点はありますか?
-
[解決済み] Mapのキーを配列に変換するには?
-
[解決済み] std::mapで範囲指定for()ループを使用するには?
-
[解決済み] マップの全キーに対する反復処理
-
[解決済み】TypescriptでDictionaryを宣言し、初期化する。
-
[解決済み】マップからキーのスライスを取得する
-
[解決済み】地図上のキーを削除する
-
[解決済み】C++ マップのループ処理
-
[解決済み] ある項目のDictionaryを別のDictionaryに追加する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftで辞書を繰り返し使用する
-
[解決済み] Goでマップにキーが含まれているかどうかを確認するには?
-
[解決済み】TypescriptでDictionaryを宣言し、初期化する。
-
[解決済み] Pythonでリストからキーと空の値でdictを初期化する方法は?
-
[解決済み】地図上のキーを削除する
-
[解決済み】辞書テキストファイル【終了しました
-
[解決済み】地図と辞書の違いは何ですか?
-
[解決済み】KotlinでListをMapに変換する方法は?
-
[解決済み] ある項目のDictionaryを別のDictionaryに追加する方法
-
[解決済み] 範囲ループ内で選択されたキーをmapから削除しても安全ですか?