2 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
您只能在表示結(jié)構(gòu)(即)上調(diào)用NumField
或Field
方法。reflect.Type
t.Kind() == reflect.Struct
如果您有切片類(lèi)型,則可以通過(guò)Elem
方法訪(fǎng)問(wèn)包含的類(lèi)型,該方法返回另一個(gè)reflect.Type
. 如果切片包含一個(gè)結(jié)構(gòu)體,那么你可以在這個(gè)類(lèi)型上調(diào)用NumField
/ Field
。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以遍歷切片,調(diào)用CreateQuery每個(gè)查詢(xún):
func CreateQueries(t interface{}, where string) {
v := reflect.ValueOf(t)
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
if v.Kind() == reflect.Array || v.Kind() == reflect.Slice {
for i := 0; i < v.Len(); i++ {
CreateQuery(v.Index(i).Interface(), where)
}
}
}
使用reflect.Value.Index您可以單獨(dú)訪(fǎng)問(wèn)每個(gè)字段,調(diào)用.Interface()該值會(huì)產(chǎn)生該值的interface{}類(lèi)型表示,使其適合將其放入您的CreateQuery函數(shù)中(需要一個(gè)interface{}值)。
- 2 回答
- 0 關(guān)注
- 259 瀏覽
添加回答
舉報(bào)