结构中的泛化 - golang
Generalization in structs - golang
我有这个函数可以将 JSON 文件读入驱动程序结构:
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{} 但没有成功。
谢谢
更改函数的签名以使其通用,并将切片作为参数传递。以下应该有效:
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
}
我有这个函数可以将 JSON 文件读入驱动程序结构:
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{} 但没有成功。
谢谢
更改函数的签名以使其通用,并将切片作为参数传递。以下应该有效:
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
}