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

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

為什么在解組 JSON 時(shí)字符串和 []bytes 的處理方式不同?

為什么在解組 JSON 時(shí)字符串和 []bytes 的處理方式不同?

Go
牛魔王的故事 2021-09-13 14:56:33
我從閱讀文檔中了解到,string它本質(zhì)上是不可變的[]byte,并且可以輕松地在兩者之間進(jìn)行轉(zhuǎn)換。然而,當(dāng)從 JSON 解組時(shí),這似乎不是真的。以下面的示例程序?yàn)槔簆ackage mainimport (    "encoding/json"    "fmt")type STHRaw struct {    Hash []byte `json:"hash"`}type STHString struct {    Hash string `json:"hash"`}func main() {    bytes := []byte(`{"hash": "nuyHN9wx4lZL2L3Ir3dhZpmggTQEIHEZcC3DUNCtQsk="}`)    stringHead := new(STHString)    if err := json.Unmarshal(bytes, &stringHead); err != nil {        return    }    rawHead := new(STHRaw)    if err := json.Unmarshal(bytes, &rawHead); err != nil {        return    }    fmt.Printf("String:\t\t%x\n", stringHead.Hash)    fmt.Printf("Raw:\t\t%x\n", rawHead.Hash)    fmt.Printf("Raw to string:\t%x\n", string(rawHead.Hash[:]))}這給出了以下輸出:String:         6e7579484e397778346c5a4c324c3349723364685a706d67675451454948455a63433344554e437451736b3dRaw:            9eec8737dc31e2564bd8bdc8af77616699a0813404207119702dc350d0ad42c9Raw to string:  9eec8737dc31e2564bd8bdc8af77616699a0813404207119702dc350d0ad42c9 相反,我希望每次都能收到相同的價(jià)值。有什么不同?
查看完整描述

1 回答

?
犯罪嫌疑人X

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

encoding/json包的設(shè)計(jì)者決定應(yīng)用程序必須在string值中提供有效的 UTF-8 文本,并且應(yīng)用程序可以在值中放置任意字節(jié)序列[]byte。包 base64 對(duì)[]byte值進(jìn)行編碼以確保生成的字符串是有效的 UTF-8。

Marshal 函數(shù)文檔中[]byte描述了值的編碼。

這個(gè)決定不是由 Go 語(yǔ)言的設(shè)計(jì)決定的。該string類(lèi)型可以包含任意字節(jié)序列。該[]byte類(lèi)型可以包含有效的 UTF-8 文本。

設(shè)計(jì)者可以在字段標(biāo)簽中使用一個(gè)標(biāo)志來(lái)指示應(yīng)該對(duì) astring[]byte值進(jìn)行編碼以及使用哪個(gè)編碼器,但這不是他們所做的。


查看完整回答
反對(duì) 回復(fù) 2021-09-13
  • 1 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專(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)