当前位置: > > > > 复合文字使用无键字段
来源:stackoverflow
2024-04-21 18:18:35
0浏览
收藏
亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《复合文字使用无键字段》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。
问题内容
我正在使用 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内部使用。
有关更多信息,请查看
您只需更改:
filter := bson.d{{"autorefid", "100"}}
至:
filter := bson.D{{Key: "autorefid", Value: "100"}}
//跳过primitive.e,如chris w所说
以上就是《复合文字使用无键字段》的详细内容,更多关于的资料请关注公众号!