即使所有值都是具体类型,也不能简单地转换
[]interface{}为,因为这两种类型具有不同的内存布局/表示形式。
您必须定义如何用
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("%qn", s)
输出(在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}"]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)