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

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

當(dāng)作為參數(shù)傳遞給單獨(dú)包中的函數(shù)時(shí),結(jié)構(gòu)不是類(lèi)型

當(dāng)作為參數(shù)傳遞給單獨(dú)包中的函數(shù)時(shí),結(jié)構(gòu)不是類(lèi)型

Go
www說(shuō) 2023-03-21 17:17:52
我正在制作一個(gè) JSON 驗(yàn)證函數(shù),并且正在嘗試實(shí)現(xiàn)它。但是,當(dāng)我嘗試將它們作為參數(shù)導(dǎo)入我的驗(yàn)證函數(shù)(位于另一個(gè)包中)時(shí),我的結(jié)構(gòu)出現(xiàn)了問(wèn)題。它在另一個(gè)包中的原因是因?yàn)槲覍⒃诓煌穆酚晌募姓{(diào)用一個(gè)通用驗(yàn)證函數(shù),所以我實(shí)際上不能在該包中包含任何結(jié)構(gòu),它們必須在路由文件中導(dǎo)入和定義。type UsersJSON struct {    Users struct {        Put []UserJSON `json:"PUT"`    } `json:"users"`}type UserJSON struct {    display_name     string `json:"display_name"`    username        string `json:"username"`    email           string `json:"email"`    password        string `json:"password"`}func MyFunc(w http.ResponseWriter, r *http.Request) {    errors, _ := schema.Validate(data, r, UsersJSON)}func Validate(schemaHelper interface{}) (interface{}, error) {    file, err := os.Open("config/schema/schema.json")    if err != nil {        return nil, err    }    defer file.Close()    byteValue, _ := ioutil.ReadAll(file)    var helpers schemaHelper // this is the error    json.Unmarshal(byteValue, &helpers)    fmt.Printf("%v", helpers)}我的 JSON 架構(gòu)如下所示:{    "users": {        "PUT": {        }    }}我想讓這個(gè)方法起作用,因?yàn)樗棺詣?dòng)驗(yàn)證變得更容易和更快。這不會(huì)編譯并給出錯(cuò)誤schemaHelper is not a type知道我該如何解決這個(gè)問(wèn)題嗎?
查看完整描述

2 回答

?
慕的地8271018

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

您正在嘗試聲明一個(gè)名為helpers, 類(lèi)型的變量schemaHelper,但是(至少在顯示的代碼中)您沒(méi)有定義任何名為 的類(lèi)型schemaHelper。您有一個(gè)名為 的變量schemaHelper。您不能將類(lèi)型用作變量,或?qū)⒆兞坑米黝?lèi)型。您必須Validate通過(guò)傳遞一個(gè)實(shí)例來(lái)調(diào)用UsersJSON,然后您可以直接將 JSON 解組到該實(shí)例中。看起來(lái)您可能正在尋找的是這樣的東西:


func MyFunc(w http.ResponseWriter, r *http.Request) {

    var unmarshaled UsersJSON

    errors, _ := schema.Validate(&unmarshaled)

}


func Validate(schemaHelper interface{}) (error) {

    file, err := os.Open("config/schema/schema.json")

    if err != nil {

        return nil, err

    }


    defer file.Close()


    byteValue, _ := ioutil.ReadAll(file)


    return json.Unmarshal(byteValue, schemaHelper)

}

這會(huì)將 JSON 解組為變量schemaHelper(無(wú)論它是什么類(lèi)型),供調(diào)用者在其認(rèn)為合適的情況下使用。請(qǐng)注意,這是一個(gè)粗略的最佳猜測(cè),因?yàn)樵谀膯?wèn)題中,調(diào)用傳遞Validate了 3 個(gè)參數(shù),但給出的函數(shù)定義只接受 1 個(gè)參數(shù)。


但是,我認(rèn)為這不會(huì)像您根據(jù)問(wèn)題認(rèn)為的那樣進(jìn)行“驗(yàn)證”。它只驗(yàn)證 JSON 在語(yǔ)法上是有效的,而不是它與您struct傳入的任何關(guān)系 - 它可能具有結(jié)構(gòu)中未定義的字段,它可能缺少已定義的字段,并且不會(huì)返回任何錯(cuò)誤。


最后,該類(lèi)型UsersJSON沒(méi)有導(dǎo)出字段(所有字段都以小寫(xiě)字母開(kāi)頭,使它們未導(dǎo)出/私有),因此無(wú)論如何都不會(huì)將任何內(nèi)容解組到其中。encoding/json只能解組為導(dǎo)出的字段。


查看完整回答
反對(duì) 回復(fù) 2023-03-21
?
慕雪6442864

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

您收到此錯(cuò)誤是因?yàn)?code>schemaHelper它不是一種類(lèi)型。實(shí)際上,interface{}正如您在 function 中聲明的那樣,它是 type 的函數(shù)變量Validate



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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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