結構體切片(結構體陣列)的反射使用

2021-10-10 04:04:14 字數 1310 閱讀 9725

使用場景:

使用者上傳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...