【Go】mapからキーを削除する方法
参考書どおりに書いたら動かなかったのでメモ
この問題に詰まってここに来た人はこんな感じのコードを書いたんじゃないでしょうか
package main import "fmt" func main(){ m:=make(map[string]int) m["id"]=100 fmt.Printf("%v\n",m) //idを消す m["id"]=0,false //しかしコンパイルエラー }
調べてみたところこのような記事がありました
stackoverflow.com
要約すると、あの書き方は昔のgo言語で使える方法だったけど、今は使えないよ!別の方法を使ってね!ということです。
答えは以下の書き方です
delete(m,"id")
従来の書き方では必ずfalseを渡していたほか、新しく値を代入したところでそのキーは無効化されているため、謎が多い書き方だったみたいです。
delete関数は戻り値を持たないのでキーの削除が成功したかどうかの結果はわかりませんが、
削除後、そのキーが存在するか調べれば消せたかわかります
package main import "fmt" func main(){ m:=make(map[string]int) m["id"]=100 fmt.Printf("%v\n",m) _,ok:=m["id"] //idキーが存在することを確認 fmt.Printf("%v\n",ok) //idキーを削除 delete(m,"id") //idキーが存在するか確認 _,ok=m["id"] //存在しないので結果はfalse fmt.Printf("%v\n",ok) }
map[id:100] true false
もっと英語頑張らないとね。
Google翻訳を手放せるようになりたい