go convert slice to struct
2024-10-20 15:18:44
Question: in golang how to convert slice to struct
scene 1:use reflect convert slice to struct
func SliceToStruct(array interface{}) (forwardPort *ForwardPort, err error) {
forwardPort = &ForwardPort{}
valueOf := reflect.ValueOf(forwardPort)
if valueOf.Kind() != reflect.Ptr {
return nil, errors.New("must ptr")
}
valueOf = valueOf.Elem()
if valueOf.Kind() != reflect.Struct {
return nil, errors.New("must struct")
}
switch array.(type) {
case []string:
arrayImplement := array.([]string)
for i := 0; i < valueOf.NumField(); i++ {
if i >= len(arrayImplement) {
break
}
val := arrayImplement[i]
if val != "" && reflect.ValueOf(val).Kind() == valueOf.Field(i).Kind() {
valueOf.Field(i).Set(reflect.ValueOf(val))
}
}
case []interface{}:
arrayImplement := array.([]interface{})
for i := 0; i < valueOf.NumField(); i++ {
if i >= len(arrayImplement) {
break
}
val := arrayImplement[i]
if val != "" && reflect.ValueOf(val).Kind() == valueOf.Field(i).Kind() {
valueOf.Field(i).Set(reflect.ValueOf(val))
}
}
}
return forwardPort, nil
}
struct to anything
https://github.com/fatih/structs
最新文章
- Makefile拆分编写
- Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
- csharp: Data binding in WPF DataGrid control
- html中div定位练习
- FreePascal经典资料
- CSS和CSS3中的伪元素和伪类(总结)
- css布局: 两栏 自适应高度
- Response.Write 、RegisterClientScriptBlock和RegisterStartupScript总结
- 对于ES6中Promise的个人见解
- RecyclerView 加入一个滑动控件bug处理 GridView只显示第一行
- navicat for mysql 12中文破解版(安装+破解)--亲测可用
- MVP模式和Clean模式
- asp.net core 微信H5支付(扫码支付,H5支付,公众号支付,app支付)之2
- mac pro 如何让终端默认运行python3.X而不是2.7
- [Docker] Converting from Docker Compose to Kubernetes
- 前端CSS-font属性,超链接的美化,css精灵,background综合属性
- highcharts图表配置参数汇总
- DataTable的序列化和反序列化
- Ubuntu11.10 带图形安装步骤详解
- caffe可视化