gpt4 book ai didi

go - 将结构 slice 转换为2D字符串 slice

转载 作者:行者123 更新时间:2023-12-01 22:26:42 25 4
gpt4 key购买 nike

我想从数据库中获取数据并写入Excel

假设我有一个类似的结构:

type user struct {
ID int64
Name string
Age int
}

我可以获得一个指向用户类型表DB &[]user{}的 slice 的指针

但我想将该 slice 转换为字符串 [][]string{}的2D slice

这是我的代码尝试做这样的工作:

func toStrings(slice interface{}) [][]string {
switch reflect.TypeOf(slice).Elem().Kind() {
case reflect.Slice:
ret := [][]string{}
val := reflect.ValueOf(slice).Elem()
for i := 0; i < val.Len(); i++ {

tempSlice := []string{}

tempV := reflect.ValueOf(val.Index(i))

for j := 0; j < tempV.NumField(); j++ {
tempSlice = append(tempSlice, tempV.Field(j).String())
}

ret = append(ret, tempSlice)
}
return ret
}
return nil

}

但是从上面的代码中我得到的是像 [<*reflect.rtype Value> <unsafe.Pointer Value> <reflect.flag Value>]这样的 slice

我在哪里做错了?

我在 golang playground中的代码

最佳答案

抱歉,我发现我在哪里做错了,我tempV错误了

func toStrings(slice interface{}) [][]string {
switch reflect.TypeOf(slice).Elem().Kind() {
case reflect.Slice:
ret := [][]string{}
val := reflect.ValueOf(slice).Elem()
for i := 0; i < val.Len(); i++ {

tempSlice := []string{}

// tempV should be:
tempV := val.Index(i)
// instead of reflect.ValueOf(val.Index(i))

for j := 0; j < tempV.NumField(); j++ {
tempSlice = append(tempSlice, tempV.Field(j).String())
}

ret = append(ret, tempSlice)
}
return ret
}
return nil

}

关于go - 将结构 slice 转换为2D字符串 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59550063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com