登录
首页 >  Golang >  Go问答

复合文字使用无键字段

来源:stackoverflow

时间:2024-04-21 18:18:35 427浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《复合文字使用无键字段》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我正在使用 golang 的新官方 mongodb 驱动程序。我创建了一个复杂的查询,将数据插入 mongo db,然后根据元素值对其进行排序。我正在使用一个过滤器,其中我使用以下命令创建了 bson 类型:-

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

但它显示一条警告:

primitive.e 复合文字使用无键字段

这些警告在我的代码中造成了混乱。


解决方案


可以通过将检查标志设置为 false 来停止警告。

$ go doc cmd/vet

默认情况下执行所有检查。如果任何标志显式设置为 true,则仅运行这些测试。相反,如果有任何标志 明确设置为 false,只有那些测试被禁用。因此 -printf=true 运行 printf 检查,-printf=false 运行除 printf 检查之外的所有检查。

unkeyed composite literals

flag: -composites

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

但出现警告是由于在 primitive.e 结构体中设置值时未提供键名称。

primitive.e 结构设置键将删除警告消息。例如

filter := bson.d{primitive.e{key: "autorefid", value: "100"}}

包原语包含类似于 bson 的 go 原语的类型 类型不能有直接的 go 原始表示。

type e struct {
    key   string
    value interface{}
}

e代表d的bson元素。它通常在d内部使用。

有关更多信息,请查看 primitive.E

您只需更改:

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

至:

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

//跳过primitive.e,如chris w所说

以上就是《复合文字使用无键字段》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>