从结构体切片中获取指定字段的切片

dhi*_*him 7 struct go slice

我有一个包含 10 辆车的结构体,例如:

type struct car {
    engine
    window
    wheel
}
Run Code Online (Sandbox Code Playgroud)

所以切片 cars 包含 10 个汽车结构。

我想知道是否存在一个函数,例如:

var engines string[] = cars.Getfield("engine") // engines will contain 10 engines names
Run Code Online (Sandbox Code Playgroud)

Ekl*_*vya 2

没有为此的库函数。

您可以使用反射包手动实现

例子:

type Cars []Car

func (cars Cars) getFieldString(field string) []string {
    var data []string
    for _, car := range cars {
        r := reflect.ValueOf(car)
        f := reflect.Indirect(r).FieldByName(field)
        data = append(data, f.String())
    }
    return data
}
Run Code Online (Sandbox Code Playgroud)

此处Playground 中的代码