[Go] マップのキーとして構造体を使う
作成日: 2022年01月18日
Go のマップではキーとして構造体を使うことができます。下記の例では key
という構造体を定義し、マップ m
のキーとして使用しています。
package main
import "fmt"
type key struct {
a string
b string
}
func main() {
m := make(map[key]int)
m[key{a: "one", b: "two"}] = 1
fmt.Printf("%#v", m)
}
実行結果は下記のとおりです。
map[main.key]int{main.key{a:"one", b:"two"}:1}
なお、同じフィールドを持つ構造体は順番が異なっていても同一のキーとして扱われるため上書きが行われます。
package main
import "fmt"
type key struct {
a string
b string
}
func main() {
m := make(map[key]int)
m[key{a: "one", b: "two"}] = 1
m[key{b: "two", a: "one"}] = 2
fmt.Printf("%#v", m)
}
実行結果は下記の通りです。
map[main.key]int{main.key{a:"one", b:"two"}:2}