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

Function 指向函数参数中接口片的指针,function,pointers,go,parameters,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

我有以下功能:

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)
func read(filePath string, structure interface{}) error {
  raw, err := ioutil.ReadFile(filePath)
  if err != nil {
    return err
  }
  return json.Unmarshal(raw, structure)
}
var indexes []Index
err := read(path + "/" + element + ".json", &indexes)
if err != nil {
    fmt.Println(err.Error())
    os.Exit(1)
}
然而,当我从函数声明中去掉structure*[]接口时,我发现一个奇怪的错误消失了:

./index.verb.go:73: syntax error: unexpected ), expecting {

我想当我试图将指针传递给泛型类型的切片时,会出现一些问题。那我该怎么做呢?我不能执行structure*[]索引,因为我还想返回其他类型

如下声明函数:

    indexes := []Index
    read(path + "/" + element + ".json", &indexes)
func read(filePath string, structure interface{}) error {
  raw, err := ioutil.ReadFile(filePath)
  if err != nil {
    return err
  }
  return json.Unmarshal(raw, structure)
}
var indexes []Index
err := read(path + "/" + element + ".json", &indexes)
if err != nil {
    fmt.Println(err.Error())
    os.Exit(1)
}
结构值传递给json.Unmarshal,可以是json.Unmarshal支持的任何类型

可以这样称呼:

    indexes := []Index
    read(path + "/" + element + ".json", &indexes)
func read(filePath string, structure interface{}) error {
  raw, err := ioutil.ReadFile(filePath)
  if err != nil {
    return err
  }
  return json.Unmarshal(raw, structure)
}
var indexes []Index
err := read(path + "/" + element + ".json", &indexes)
if err != nil {
    fmt.Println(err.Error())
    os.Exit(1)
}
如果您运行go-fmt,它将告诉您语法错误的精确位置,在本例中甚至会告诉您所需的字符。