我有以下功能:
func read(filePath string, structure *[]interface) {
raw, err := ioutil.ReadFile(filePath)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}
json.Unmarshal(raw, structure)
}
我称之为:
indexes := []Index
read(path + "/" + element + ".json", &indexes)
但是,当我从函数声明中取消structure *[]interface
时,我发现了一个奇怪的错误消失:
./index.verb.go:73: syntax error: unexpected ), expecting {
当我尝试将指针传递给泛型类型时,我认为有些事情。那我该怎么办?我不能structure *[]Index
,因为还有其他类型我想回来
答案 0 :(得分:0)
声明这样的函数:
func read(filePath string, structure interface{}) error {
raw, err := ioutil.ReadFile(filePath)
if err != nil {
return err
}
return json.Unmarshal(raw, structure)
}
structure
值会传递到json.Unmarshal
,并且可以是json.Unmarshal
支持的任何类型。
这样称呼:
var indexes []Index
err := read(path + "/" + element + ".json", &indexes)
if err != nil {
fmt.Println(err.Error())
os.Exit(1)
}