作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
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/
设置 public interface ITable { } public class Company : ITable { public int Id { get; set; } p
go 规范指出: A variable of interface type can store a value of any type with a method set that is any su
我是一名优秀的程序员,十分优秀!