KDOC 519: Goのmapではキーの値が同じでも型情報が違えば別のものとして扱われる

この文書のステータス

  • 作成
    • 2026-02-22 貴島
  • レビュー
    • <署名>

概要

型が違えば同じ値であっても違うものとして扱われる。当然にも見えるが、直感的ではない状況に見えることもある。

package main

import "fmt"

type a string
type b string

func main() {
	m := map[any]any{}
	m[a("k")] = "v"
	m[b("k")] = "v"

	fmt.Printf("%#v", m)
}
map[interface {}]interface {}{"k":"v", "k":"v"}

出力した表示上は型が表示されていないので、キーがかぶって登録されているように見える。

関連

なし。