一尘不染

如何创建通用函数以解组所有类型?

go

我下面有一个函数,我想使其泛型:

func genericUnmarshalForType1(file string) Type1 {

  raw, err := ioutil.ReadFile(file)

  if err != nil {
      fmt.Println(err.Error())
      os.Exit(1)
  }

  var type1 Type1

  json.Unmarshal(raw, &type1)
}

我想创建一个接受Type1或Type2的函数,而无需为每个类型创建一个函数。我怎样才能做到这一点?


阅读 209

收藏
2020-07-02

共1个答案

一尘不染

以相同的方式进行json.Unmarshal操作:

func genericUnmarshal(file string, v interface{}) {
    // File emulation.
    raw := []byte(`{"a":42,"b":"foo"}`)
    json.Unmarshal(raw, v)
}

游乐场:http : //play.golang.org/p/iO-
cbK50BE。

通过实际返回遇到的任何错误,可以使此功能更好。

2020-07-02