使用場景:
使用者上傳excel檔案後,轉換成string,然後根據結構體的標籤,反射到對應欄位裡。
遇到的問題:
結構體切片(結構體陣列)使用反射,與單一結構體不同。
源**:v.index(i - 1).elem.field(k).setstring(rows[i][j])
報錯: handler crashed with error reflect: call of reflect.value.elem on struct value
修改為:v.index(i - 1).field(k).setstring(rows[i][j])
下面是官方文件
// 定義結構體
type tkorders struct
type tbsellerorders struct
//字串陣列轉結構體
func
arrstringtostruct
(tk inte***ce
, rows [
]string
)(t reflect.type, err error
) t = reflect.
typeof
(tk)
v := reflect.
valueof
(tk)
for j, r :=
range rows[0]
// 此處不能用 v.index(i - 1).elem().field(k).setstring(rows[i][j])
v.index
(i -1)
.field
(k).
setstring
(rows[i]
[j])
} isbreak =
true
break}}
if isbreak }}
return
}
//第一種**
func
(this *orders)
gettkorder()
/**處理程式**/
}//另外一種**
func
(this *orders)
gettborder()
/**處理程式**/
}
結構體 結構體陣列
void test 函式遞迴呼叫 允許函式體裡再次呼叫函式本身 使用遞迴一定要有出口 long fact int n return n fact n 1 定義乙個新的資料型別 struct mypoint 結構體型別所占用的記憶體空間是最大資料型別的整數倍。因為結構體型別的變數在分配記憶體時有記憶體...
結構體 結構體陣列
struct 結構體型別名 型別名 成員名 型別名 成員名 先宣告結構體型別,再定義結構體變數名 宣告結構體型別,不分配空間 定義結構體型別變數,就要分配記憶體空間 作 者 hh 完成日期 2018年8月15日 版本號 v1.0 問題描述 結構體巢狀 賦值 輸出 輸入描述 程式輸出 include ...
golang反射 二 反射結構體切片讀取資料
type man struct s1 make man,0 s1 s1,man s1 s1,man s1 s1,man func v inte ce l getvalue.len for i 0 i l i fmt.printf type kind s,type name s,value v n t...