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

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

需要幫助克服“反射:非結(jié)構(gòu)類型的 NumField”

需要幫助克服“反射:非結(jié)構(gòu)類型的 NumField”

Go
繁華開滿天機(jī) 2021-11-22 17:44:53
我正在嘗試構(gòu)建一個(gè) Query 結(jié)構(gòu),該結(jié)構(gòu)將表示進(jìn)出我們的 Cassandra 數(shù)據(jù)庫的數(shù)據(jù)。問題是,我試圖將 Type 作為結(jié)構(gòu)中的字段之一,以便稍后重建它。我覺得我真的很親近,但這給我?guī)砹艘恍﹩栴}。我在嘗試執(zhí)行此操作時(shí)遇到了一個(gè)非常討厭的錯(cuò)誤:2015/11/17 15:42:22 http: panic serving 127.0.0.1:57962: reflect: NumField of non-struct typegoroutine 34 [running]:net/http.(*conn).serve.func1(0xc820184000, 0x7f36d7459b00, 0xc820180008)    /usr/lib/go/src/net/http/server.go:1287 +0xb5reflect.(*rtype).NumField(0x790820, 0xc8200b9a60)    /usr/lib/go/src/reflect/type.go:660 +0x7bgithub.com/relops/cqlr.(*Binding).compile(0xc82004f6f0, 0x77ab60, 0xc8200b9a60, 0x16, 0xc820194140, 0x5, 0x5, 0x0, 0x0)    /home/jared/dev/go-pp/src/github.com/relops/cqlr/cqlr.go:160 +0xf8github.com/relops/cqlr.(*Binding).Scan(0xc82004f6f0, 0x77ab60, 0xc8200b9a60, 0x825280)    /home/jared/dev/go-pp/src/github.com/relops/cqlr/cqlr.go:99 +0x199main/cassandra/query.Query.RetryingQuery(0x9325e0, 0x19, 0x0, 0x0, 0x0, 0x0, 0x7f36d74580a8, 0x87b120, 0x0, 0x0, ...)    /home/jared/dev/go-pp/src/main/cassandra/query/query.go:39 +0x39emain.ViewHosts(0x7f36d7459f88, 0xc8200e73f0, 0xc82018e000)    /home/jared/dev/go-pp/src/main/handlers.go:86 +0x1f3net/http.HandlerFunc.ServeHTTP(0x9a03b0, 0x7f36d7459f88, 0xc8200e73f0, 0xc82018e000)    /usr/lib/go/src/net/http/server.go:1422 +0x3amain/utils.Logger.func1(0x7f36d7459f88, 0xc8200e73f0, 0xc82018e000)    /home/jared/dev/go-pp/src/main/utils/logger.go:32 +0x9cnet/http.HandlerFunc.ServeHTTP(0xc820109200, 0x7f36d7459f88, 0xc8200e73f0, 0xc82018e000)    /usr/lib/go/src/net/http/server.go:1422 +0x3agithub.com/gorilla/mux.(*Router).ServeHTTP(0xc82001aa00, 0x7f36d7459f88, 0xc8200e73f0, 0xc82018e000)    /home/jared/dev/go-pp/src/github.com/gorilla/mux/mux.go:100 +0x29enet/http.serverHandler.ServeHTTP(0xc82016b1a0, 0x7f36d7459f88, 0xc8200e73f0, 0xc82018e000)    /usr/lib/go/src/net/http/server.go:1862 +0x19enet/http.(*conn).serve(0xc820184000)    /usr/lib/go/src/net/http/server.go:1361 +0xbeecreated by net/http.(*Server).Serve
查看完整描述

1 回答

?
紫衣仙女

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

更改自:


value := reflect.New(query.structType)

for bindQuery.Scan(&value) {

到:


value := reflect.New(query.structType).Interface()

for bindQuery.Scan(value) {

有關(guān)完整的工作示例,請(qǐng)參見此處(粘貼在下面):


package main


import "reflect"


func Scan(d interface{}) {

    v := reflect.ValueOf(d)

    i := reflect.Indirect(v)

    s := i.Type()

    println(s.NumField()) // will print out 0, if you change Host to have 1 field, it prints out 1

}


func query(t reflect.Type) {

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

    Scan(value)

}


type Host struct{}

// type Host struct{int} // comment above line, uncomment this one, and println above will print 1


func main() {

    var h Host

    query(reflect.TypeOf(h))

}

這模擬了您的代碼以及 clqr 庫的作用(請(qǐng)參閱https://github.com/relops/cqlr/blob/master/cqlr.go#L85-L99和https://github.com/relops/cqlr/ blob/master/cqlr.go#L154-L160)。你基本上需要s := i.Type()成為TypeOf你的Host結(jié)構(gòu),所以如果你從 clqr 代碼所做的事情向后工作,你可以推斷出你需要傳遞給Scan調(diào)用的內(nèi)容。并且鑒于您擁有的輸入是 a reflect.Type,您可以推斷出如何從中獲得Type要傳遞到的正確類型的對(duì)象Scan。


查看完整回答
反對(duì) 回復(fù) 2021-11-22
  • 1 回答
  • 0 關(guān)注
  • 177 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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