【问题标题】:Pointer to slice of interfaces in function parameter指向函数参数中接口切片的指针
【发布时间】:2017-07-04 20:15:43
【问题描述】:

我有以下功能:

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,因为我也想返回其他类型

【问题讨论】:

  • 如果您运行go fmt,它会告诉您语法错误的准确位置,在这种情况下甚至会告诉您预期的字符。

标签: function pointers go parameters


【解决方案1】:

像这样声明函数:

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

【讨论】:

    猜你喜欢
    • 2019-02-05
    • 2015-05-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多