Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 接口{}类型理解_Go - Fatal编程技术网

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)称为类型断言