Go 接口{}类型理解
无法理解问题:Go 接口{}类型理解,go,Go,无法理解问题: var foo interface{} foo = make(map[string]int) fmt.Println(foo) // map[] 但是 prog.go:10:无效操作:foo[“one”](类型接口的索引{}) [进程以非零状态退出] 这是为什么?foo属于接口{}类型。它可能包含一个映射,但它仍然是一个接口 要执行映射查找,首先需要进行类型断言: foo.(map[string]int)["one"] = 1 有关类型断言的更多
var foo interface{}
foo = make(map[string]int)
fmt.Println(foo) // map[]
但是
prog.go:10:无效操作:foo[“one”](类型接口的索引{})
[进程以非零状态退出]
这是为什么?
foo
属于接口{}
类型。它可能包含一个映射,但它仍然是一个接口
要执行映射查找,首先需要进行类型断言:
foo.(map[string]int)["one"] = 1
有关类型断言的更多信息,请参见:
对于接口类型为x的表达式和类型为T的表达式,主表达式x、 (T)
断言x不是nil,并且存储在x中的值是T类型。
符号x.(T)称为类型断言
foo
属于接口{}
类型。它可能包含一个映射,但它仍然是一个接口
要执行映射查找,首先需要进行类型断言:
foo.(map[string]int)["one"] = 1
有关类型断言的更多信息,请参见:
对于接口类型为x的表达式和类型为T的表达式,主表达式x、 (T)
断言x不是nil,并且存储在x中的值是T类型。
符号x.(T)称为类型断言