能否将 *[ ]interface{} 转 struct ?

af913337456 · · 1721 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

```go func selectExe(sqlStr string,afterScan func(sct *[]interface{}),sctType interface{},args ...interface{})([]interface{},error){ thisTx := getSqlTx() defer thisTx.Commit() stmt, err := thisTx.Prepare(sqlStr) defer stmt.Close() if err != nil { log.Fatal(err) return nil,err } rows, err := stmt.Query(args...) if err != nil { log.Fatal(err) return nil,err } result := make([]interface{}, 0) s := reflect.ValueOf(sctType).Elem() length := s.NumField() oneRow := make([]interface{}, length) for i := 0; i < length; i++ { oneRow[i] = s.Field(i).Addr().Interface() } defer rows.Close() for rows.Next() { err := rows.Scan(oneRow...) afterScan(&oneRow) // 这一行 if err != nil { panic(err) } result = append(result, s.Interface()) } return result,nil } ``` 在上面的 afterScan 处,回调处理下面代码 ```go func(sct *[]interface{}) { // 想要在这里把 sct 转为 postStruct 结构体,但是尝试了不行,求助啊!!! //post := (*sct).(postStruct) } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1721 次点击  ∙  1 赞  
加入收藏 微博
4 回复  |  直到 2017-02-14 05:26:47
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传