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

最新文章

  1. Makefile拆分编写
  2. Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
  3. csharp: Data binding in WPF DataGrid control
  4. html中div定位练习
  5. FreePascal经典资料
  6. CSS和CSS3中的伪元素和伪类(总结)
  7. css布局: 两栏 自适应高度
  8. Response.Write 、RegisterClientScriptBlock和RegisterStartupScript总结
  9. 对于ES6中Promise的个人见解
  10. RecyclerView 加入一个滑动控件bug处理 GridView只显示第一行
  11. navicat for mysql 12中文破解版(安装+破解)--亲测可用
  12. MVP模式和Clean模式
  13. asp.net core 微信H5支付(扫码支付,H5支付,公众号支付,app支付)之2
  14. mac pro 如何让终端默认运行python3.X而不是2.7
  15. [Docker] Converting from Docker Compose to Kubernetes
  16. 前端CSS-font属性,超链接的美化,css精灵,background综合属性
  17. highcharts图表配置参数汇总
  18. DataTable的序列化和反序列化
  19. Ubuntu11.10 带图形安装步骤详解
  20. caffe可视化

热门文章

  1. 为什么要使用 rabbitmq?
  2. idea-中的Mark Diretory as的内容
  3. 设计一个简单的devops系统
  4. Apollo模块文章
  5. STM32 中的 assert_param 函数
  6. JS:数组中push对象,覆盖问题
  7. .Net Core:Docker无法拉取mcr.microsoft.com相关镜像解决办法
  8. java中异常到底有什么用?举例
  9. idea 创建maven web项目部署在 tomcat maven plugin中
  10. java读取xml文件并转换成对象,并进行修改