0

JSON ファイルを Driver 構造体に読み込む関数があります。

func getDrivers() []Driver {
    raw, err := ioutil.ReadFile("/home/ubuntu/drivers.json")
    if err != nil {
        fmt.Println(err.Error())
        os.Exit(1)
    }

    var d []Driver
    json.Unmarshal(raw, &d)
    return d
}

この関数を Pilot 構造体でも機能するように変更するにはどうすればよいですか? []interface{} を使用してみましたが、成功しませんでした。

ありがとうございました

4

1 に答える 1

0

関数のシグネチャを変更してジェネリックにし、スライスを引数として渡します。以下が機能するはずです。

func getDriversOrPilots(file string, slice interface{}) {
    raw, err := ioutil.ReadFile(file)
    if err != nil {
        fmt.Println(err.Error())
        os.Exit(1)
    }

    json.Unmarshal(raw, slice)
}

func getDrivers() []Driver {
    var d []Driver
    getDriversOrPilots("/home/ubuntu/drivers.json", &d)
    return d
}

func getPilots() []Pilot {
    var p []Pilot
    getDriversOrPilots("/home/ubuntu/pilots.json", &p)
    return p
}
于 2017-01-12T12:20:13.013 に答える