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

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

結(jié)構(gòu)字段標(biāo)記“名稱”與 reflect.StructTag.Get 不兼容:結(jié)構(gòu)標(biāo)記對(duì)的錯(cuò)誤語法

結(jié)構(gòu)字段標(biāo)記“名稱”與 reflect.StructTag.Get 不兼容:結(jié)構(gòu)標(biāo)記對(duì)的錯(cuò)誤語法

Go
holdtom 2022-12-26 16:51:21
我讀過這個(gè),但它與我的情況不同,我有以下代碼:package mainimport (    "bytes"    "fmt"    "reflect"    "strconv"    "strings")type User struct {    Name string `name`    Age  int64  `age`}func main() {    var u User = User{"bob", 10}    res, err := JSONEncode(u)    if err != nil {        panic(err)    }    fmt.Println(string(res))}func JSONEncode(v interface{}) ([]byte, error) {    refObjVal := reflect.ValueOf(v)    refObjTyp := reflect.TypeOf(v)    buf := bytes.Buffer{}    if refObjVal.Kind() != reflect.Struct {        return buf.Bytes(), fmt.Errorf(            "val of kind %s is not supported",            refObjVal.Kind(),        )    }    buf.WriteString("{")    pairs := []string{}    for i := 0; i < refObjVal.NumField(); i++ {        structFieldRefObj := refObjVal.Field(i)        structFieldRefObjTyp := refObjTyp.Field(i)        switch structFieldRefObj.Kind() {        case reflect.String:            strVal := structFieldRefObj.Interface().(string)            pairs = append(pairs, `"`+string(structFieldRefObjTyp.Tag)+`":"`+strVal+`"`)        case reflect.Int64:            intVal := structFieldRefObj.Interface().(int64)            pairs = append(pairs, `"`+string(structFieldRefObjTyp.Tag)+`":`+strconv.FormatInt(intVal, 10))        default:            return buf.Bytes(), fmt.Errorf(                "struct field with name %s and kind %s is not supprted",                structFieldRefObjTyp.Name,                structFieldRefObj.Kind(),            )        }    }    buf.WriteString(strings.Join(pairs, ","))    buf.WriteString("}")    return buf.Bytes(), nil}它運(yùn)行完美,輸出如下:{"name":"bob","age":10}但是作為 VS 代碼,它給了我以下問題:
查看完整描述

2 回答

?
臨摹微笑

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

請(qǐng)注意,這只是一個(gè)警告,告訴您您沒有遵守約定。如您所知,該代碼編譯并運(yùn)行并輸出您想要的結(jié)果:https ://go.dev/play/p/gxcv8qPVZ6z 。

為避免警告,請(qǐng)禁用 linter,或者更好的是,通過key:"value"在結(jié)構(gòu)標(biāo)記中使用來遵循約定,然后使用以下Get方法提取值:https ://go.dev/play/p/u0VTGL48TjO 。


https://pkg.go.dev/reflect@go1.18.3#StructTag

StructTag 是結(jié)構(gòu)字段中的標(biāo)記字符串。

按照慣例,標(biāo)記字符串是可選的空格分隔鍵:“值”對(duì)的串聯(lián)。每個(gè)鍵都是一個(gè)非空字符串,由除空格(U+0020 ' ')、引號(hào)(U+0022 '"')和冒號(hào)(U+003A ':')之外的非控制字符組成。每個(gè)值都被引用使用 U+0022 '"' 字符和 Go 字符串文字語法。


查看完整回答
反對(duì) 回復(fù) 2022-12-26
?
慕娘9325324

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

key:"value"例如,結(jié)構(gòu)標(biāo)簽應(yīng)該是 a field:"name"。


type User struct {

    Name string `field:"name"`

    Age  int64  `field:"age"`

}


查看完整回答
反對(duì) 回復(fù) 2022-12-26
  • 2 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報(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)