2

如何[]string在 Go 中从 struct 的值创建?例如,在以下结构中:

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方法,因此我必须将此类结构转换为.*csv.Writer[]string[]string

当然,我可以在结构上定义一个方法并让它返回[]string,但我想知道一种避免调用每个字段(即 person.Height、person.Weight、person.Name...)的方法,因为实际数据包括更多的领域。

谢谢。

4

1 回答 1

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)
}
于 2013-09-07T08:50:06.597 回答