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

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

復(fù)合文字使用非鍵控字段

復(fù)合文字使用非鍵控字段

Go
大話西游666 2023-06-05 17:24:36
我正在為 golang 使用新的官方 mongodb 驅(qū)動(dòng)程序。我創(chuàng)建了一個(gè)復(fù)雜的查詢來(lái)將數(shù)據(jù)插入 mongo db,然后根據(jù)元素值對(duì)其進(jìn)行排序。我正在使用一個(gè)過(guò)濾器,我在其中創(chuàng)建了 bson 類型:-filter := bson.D{{"autorefid", "100"}}但它顯示警告說(shuō):primitive.E 復(fù)合字面量使用非鍵控字段這些警告在我的代碼中造成了混亂。
查看完整描述

5 回答

?
繁星淼淼

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

可以通過(guò)將檢查標(biāo)志設(shè)置為 false 來(lái)停止警告。


$ go doc cmd/vet

默認(rèn)情況下執(zhí)行所有檢查。如果任何標(biāo)志顯式設(shè)置為 true,則僅運(yùn)行那些測(cè)試。相反,如果任何標(biāo)志明確設(shè)置為 false,則僅禁用那些測(cè)試。因此 -printf=true 運(yùn)行 printf 檢查,-printf=false 運(yùn)行除 printf 檢查之外的所有檢查。


Unkeyed composite literals


Flag: -composites


Composite struct literals that do not use the field-keyed syntax.

但是警告是由于在primitive.E結(jié)構(gòu)中設(shè)置值時(shí)沒(méi)有提供鍵名。


為primitive.E結(jié)構(gòu)設(shè)置鍵將刪除警告消息。例如


filter := bson.D{primitive.E{Key: "autorefid", Value: "100"}}

包原語(yǔ)包含類似于 Go 原語(yǔ)的類型,因?yàn)?BSON 類型不能有直接的 Go 原語(yǔ)表示。


type E struct {

? ? Key? ?string

? ? Value interface{}

}

E 表示 D 的 BSON 元素。它通常在 D 內(nèi)部使用。


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
躍然一笑

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

由于沒(méi)有其他人指出這一點(diǎn)——警告是為了保護(hù)您免受第三方 API 的更改悄無(wú)聲息地破壞您的代碼。

忽略此警告有可能導(dǎo)致非常討厭且難以追蹤運(yùn)行時(shí)錯(cuò)誤,因此如果您始終明確指定 3rd party 的鍵,vet您會(huì)更好。struct

struct如果您正在使用的庫(kù)的維護(hù)者出于某種原因決定更改其元素的順序,就會(huì)出現(xiàn)這種情況。例如,在 OP 的情況下Key用, 切換。Value您的代碼似乎仍然可以正常編譯,但是您打算作為鍵的內(nèi)容現(xiàn)在將作為值傳遞,反之亦然,并且事情會(huì)以意想不到的方式開(kāi)始中斷。


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
胡子哥哥

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

您可以簡(jiǎn)單地更改:

filter := bson.D{{"autorefid", "100"}}

到:

filter := bson.D{{Key: "autorefid", Value: "100"}}

//跳過(guò) primitive.E 正如 Chris W 所說(shuō)


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
泛舟湖上清波郎朗

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

你可以改變:

filter := bson.D{{"autorefid", "100"}}

到:

filter := bson.D{primitive.E{Key: "autorefid", Value: "100"}}


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
溫溫醬

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

實(shí)際上,如果不需要 BSON 文檔的有序表示,您可以通過(guò)簡(jiǎn)單地更改將 BSON 文檔更改為無(wú)序表示

filter?:=?bson.D{{"autorefid",?"100"}}

filter?:=?bson.M{"autorefid":?"100"}

MongoDB 服務(wù)器足夠聰明,可以找到匹配的索引,而不管使用的順序如何。bson.Dbson.M


查看完整回答
反對(duì) 回復(fù) 2023-06-05
  • 5 回答
  • 0 關(guān)注
  • 240 瀏覽
慕課專欄
更多

添加回答

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