指向函数参数中的接口切片的指针

时间:2017-02-15 23:03:03

标签: function pointers go parameters

我有以下功能:

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,因为还有其他类型我想回来

1 个答案:

答案 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)
}