Goでマップをクリアするにはどうすればいいですか? 質問する

Goでマップをクリアするにはどうすればいいですか? 質問する

.clear()プリミティブ型のC++ 関数のようなものを探していますmap

それとも、代わりに新しいマップを作成する必要がありますか?

更新: ご回答ありがとうございます。回答を見て、新しいマップを作成すると、望ましくない不整合が生じる場合があることに気付きました。次の例を考えてみましょう。

var a map[string]string
var b map[string]string

func main() {
    a = make(map[string]string)
    b=a
    a["hello"]="world"
    a = nil
    fmt.Println(b["hello"])
}

つまり、これは.clear()オブジェクトの内容をクリアする C++ の関数とはまだ異なります。

ベストアンサー1

おそらく、新しいマップを作成するだけでよいでしょう。同じマップが複数のコードによって参照されていて、1 つのコードで明示的に値をクリアして、この変更が他のコードにも表示されるようにする必要がある場合を除き、既存のマップをクリアしようとする本当の理由はありません。

そうですね、おそらくこう言うべきでしょう

mymap = make(map[keytype]valtype)

何らかの理由で既存のマップをクリアする必要がある場合は、次のようにすると簡単です。

for k := range m {
    delete(m, k)
}

おすすめ記事