我正在尝试将存储在 interface[] 中的数据返回到字符串数组。遇到意外错误。
type Foo struct {
Data interface{}
}
func (foo Foo) GetData() interface{} {
return foo.Data
}
func (foo *Foo) SetData(data interface{}) {
foo.Data = data
}
func main() {
f := &Foo{}
f.SetData( []string{"a", "b", "c"} )
var data []string = ([]string) f.GetData()
fmt.Println(data)
}
错误:main.go:23:语法错误:语句末尾出现意外的 f
最佳答案
您要执行的是 conversion .类型转换有具体的规则,都可以在前面的链接中看到。简而言之,您不能将 interface{}
值转换为 []string
。
你必须做的是 type assertion ,这是一种允许您(尝试)将接口(interface)类型“转换”为另一种类型的机制:
var data []string = f.GetData().([]string)
关于go - 将 interface{} 转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740437/