gpt4 book ai didi

go - 为什么 map[]interface{} 不采用 map[]SpecificInterface

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:52 26 4
gpt4 key购买 nike

go 规范指出:

A variable of interface type can store a value of any type with a method set that is any superset of the interface.

我可以

type Source interface{}
type SourceImpl struct{}

var s Source
g := new(interface{})
s = new(SourceImpl)

*g = s

但是,我不能与 map 相同:

generic := make(map[string]*interface{})
specific := make(map[string]*Source)

generic = specific

给出:

cannot use specific (type map[string]*Source) as type map[string]*interface {} in assignment

这是为什么呢?是否可以在不使用类型断言的情况下将特定类型的映射传递/分配给泛型类型的映射?

最佳答案

因为 map[]interface{}map[]SpecificInterface 是两种不同的类型。如果您将泛型类型设为空接口(interface),它就可以工作。

var generic interface{}
specific := make(map[string]*Source)

generic = specific

但如果这样做,当您想要使用 map 时,您需要进行一些类型切换或类型断言。

关于go - 为什么 map[]interface{} 不采用 map[]SpecificInterface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53830945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com