亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 結構/接口

Golang 結構/接口

Go
肥皂起泡泡 2022-01-17 18:15:05
我正在嘗試做一些事情來動態地帶來 SQL 結果結構,基本上我想通過傳遞行和結構來運行一個函數(以獲取數據類型并制作一個)并在接口數組中返回。有誰知道我該怎么做?我不想將直接的“用戶”結構作為參數傳遞..這不是動態的type User struct{   Id_user int `json:"id_user"`   Name string `json:"name"`   Email string `json:"email"`   Username string `json: "username"`}func main() {  var user User  rows, _ := db.Query("SELECT id_user, name, email, username FROM users")  json.NewEncoder(w).Encode(StructRow(user, rows)) }func StructRow(u interface{}, rows *sql.Rows)[]interface{}{   var data []interface{}   for rows.Next() {      //How i can create a "user" here, dynamically      //for Example      //var user reflect.TypeOf(u)      _ = rows.Scan(StrutForScan(&user)...)      data = append(data, user)   }   return data}func StrutForScan(u interface{}) []interface{} {   val := reflect.ValueOf(u).Elem()   v := make([]interface{}, val.NumField())   for i := 0; i < val.NumField(); i++ {      valueField := val.Field(i)      v[i] = valueField.Addr().Interface()   }   return v}
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

將您的功能更改StructRow為


 func StructRow(u interface{}, rows *sql.Rows) []interface{} {

    var data []interface{}

    for rows.Next() {


         t := reflect.TypeOf(u)

         val := reflect.New(t).Interface()


         errScan := rows.Scan(StrutForScan(val)...)

         if errScan != nil {

             //proper err handling

         }

         data = append(data, val)

    }

    return data

 }

會修復它。我猜。有關反射包的更多信息,請訪問:https ://golang.org/pkg/reflect/


查看完整回答
反對 回復 2022-01-17
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號