Я знаю, что значение не одно и то же , поэтому я поставил его в двойные кавычки, я хочу знать, как карта go ha sh работает так, что cusKey
и a
отличается по типу, результат в ключе отличается.
package main
import (
"fmt"
)
type key int
const cusKey key = 1
const a int = 1
func main() {
dic := make(map[interface{}]interface{})
dic[cusKey] = 5
dic[a] = 6
fmt.Println(dic[cusKey])
fmt.Println(dic[a])
}
вывод
5
6
Как go достичь этого? Все два ключа имеют значение 1
.
Я знаю в go, если тип отличается, два значения отличаются. Таким образом, два 1
не идентичны.
Но как на самом деле карта go сделала это? Я попытался выяснить в map.go
в источнике, но не могу найти, где go реализует функцию ha sh. Он вычисляет га sh ключей с аннотациями типов?