英文:
Golang map with any key type and any value type
问题
可以在Golang中创建一个具有任意键类型和任意值类型的映射。你可以像这样创建一个映射:
dict1 := make(map[interface{}]interface{})
希望对你有帮助!
英文:
can i create in golang a map with any key type and any value type ? , something like :
dict1 := map[interface]interface{}
Thanks a lot !
答案1
得分: 4
从键类型的语言规范中可以看到:
键类型的操作符==和!=必须完全定义。
因此,大多数类型都可以用作键类型,但是:
切片、映射和函数值是不可比较的,因此不能用作映射的键。
值类型可以是任何类型,包括any
或interface{}
类型。
type mytype struct{}
type ss []string
_ = make(map[interface{}]interface{}) // 这样可以...
_ = make(map[any]any) // ... 语义上相同
_ = make(map[mytype]any) // 甚至可以是结构体
_ = make(map[ss]any) // 失败:无效的映射键类型 ss
https://go.dev/play/p/OX_utGp8nfH
英文:
From the language spec for the key type:
> The comparison operators == and != must be fully defined for operands
> of the key type;
So most types can be used as a key type, however:
> Slice, map, and function values are not comparable
and thus cannot be used as a map-key.
The value type can be any or (any
or interface{}
) type.
type mytype struct{}
type ss []string
_ = make(map[interface{}]interface{}) // this works...
_ = make(map[any]any) // ... semantically the same
_ = make(map[mytype]any) // even a struct
_ = make(map[ss]any) // FAILS: invalid map key type ss
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论