如何在Go中从struct的值创建[]string
?例如,在以下结构中:
type Person struct {
Height float64
Weight float64
Name string
Born string
}
Tim := Person{174.5, 68.3, "Tim", "United States"}
我想得到的是以下内容:
[]string{"174.5", "68.3", "Tim", "United States"}
由于我想将从结构派生的每条记录保存到CSV文件,并且Write
的{{1}}方法需要将数据作为*csv.Writer
,我必须将此类结构转换为[]string
。
当然我可以在struct上定义一个方法并让它返回[]string
,但我想知道一种避免调用每个字段的方法(即person.Height,person.Weight,person.Name ...)因为实际数据包含更多字段。
感谢。
答案 0 :(得分:3)
可能有更简单和/或更惯用的方法,但我想到的是使用reflect
这样的包:
package main
import (
"fmt"
"reflect"
)
func main() {
type Person struct {
Height float64
Weight float64
Name string
Born string
}
Tim := Person{174.5, 68.3, "Tim", "United States"}
v := reflect.ValueOf(Tim)
var ss []string
for i := 0; i < v.NumField(); i++ {
ss = append(ss, fmt.Sprintf("%v", v.Field(i).Interface()))
}
fmt.Println(ss)
}