Rog*_*ers 8 string struct interface go slice
我正在使用github.com/fatih/structs包将结构的所有字段的值转换[]interface{}
为toValues()
函数.看到这里.这很好,但最终我想通过使用csv包将值写入csv文件.该csv.Write()
功能需要[]string
输入.
简而言之:如何轻松地将输出转换toValues()
为字符串数组?
icz*_*cza 18
即使所有值都是具体类型,也不能简单地转换[]interface{}
为,因为这两种类型具有不同的内存布局/表示.有关详细信息,请参阅无法将[]字符串转换为[] interface {}.[]string
string
您必须定义如何通过string
值表示不同类型的值.
最简单明智的方法是遍历值,并使用fmt.Sprint()
获取string
每个值的表示,例如:
t := []interface{}{
"zero",
1, 2.0, 3.14,
[]int{4, 5},
struct{ X, Y int }{6, 7},
}
fmt.Println(t)
s := make([]string, len(t))
for i, v := range t {
s[i] = fmt.Sprint(v)
}
fmt.Println(s)
fmt.Printf("%q\n", s)
Run Code Online (Sandbox Code Playgroud)
输出(在Go Playground上试试):
[zero 1 2 3.14 [4 5] {6 7}]
[zero 1 2 3.14 [4 5] {6 7}]
["zero" "1" "2" "3.14" "[4 5]" "{6 7}"]
Run Code Online (Sandbox Code Playgroud)