第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

反映 Empty 切片底層類(lèi)型的字段?

反映 Empty 切片底層類(lèi)型的字段?

Go
瀟湘沐 2021-07-06 09:42:42
我有以下查詢(xún)構(gòu)建器功能:func CreateQuery(t interface{}, where string) {    var b bytes.Buffer    b.WriteString("SELECT ")    s := reflect.ValueOf(t).Elem()    typeOfT := s.Type()    for i := 0; i < s.NumField() - 1; i++ {        b.WriteString(fmt.Sprintf("%s, ", typeOfT.Field(i).Name))    }    //Last one has no Comma    b.WriteString(fmt.Sprintf("%s ", typeOfT.Field(s.NumField() - 1).Name))    b.WriteString(fmt.Sprintf("FROM %s ", typeOfT.Name()))    b.WriteString(where)    fmt.Println(b.String())}按如下方式調(diào)用時(shí)工作正常:var dst FooStructCreateQuery(&dst, "")但以下引發(fā)了“對(duì)切片值調(diào)用reflect.Value.NumField”恐慌:var dst []FooStructCreateQuery(&dst, "")我怎樣才能讓函數(shù)打印切片的底層結(jié)構(gòu)類(lèi)型的字段?似乎我想要反射SliceOf功能的倒數(shù)。
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

您只能在表示結(jié)構(gòu)(即)上調(diào)用NumFieldField方法。reflect.Typet.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)用NumFieldField。


查看完整回答
反對(duì) 回復(fù) 2021-07-12
?
12345678_0001

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{}值)。


查看完整回答
反對(duì) 回復(fù) 2021-07-12
  • 2 回答
  • 0 關(guān)注
  • 259 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)