我正在为 golang 使用新的官方 mongodb 驱动程序。我创建了一个复杂的查询来将数据插入 mongo db,然后根据元素值对其进行排序。我正在使用一个过滤器,我在其中创建了 bson 类型:-
filter := bson.D{{"autorefid", "100"}}
但它显示警告说:
primitive.E 复合字面量使用非键控字段
这些警告在我的代码中造成了混乱。
原文由 Himanshu 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在为 golang 使用新的官方 mongodb 驱动程序。我创建了一个复杂的查询来将数据插入 mongo db,然后根据元素值对其进行排序。我正在使用一个过滤器,我在其中创建了 bson 类型:-
filter := bson.D{{"autorefid", "100"}}
但它显示警告说:
primitive.E 复合字面量使用非键控字段
这些警告在我的代码中造成了混乱。
原文由 Himanshu 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于没有其他人指出这一点——警告是为了保护您免受第三方 API 的更改悄无声息地破坏您的代码。
忽略这个 vet
警告有可能导致真正令人讨厌且难以追踪的运行时错误,所以如果你 总是指定第三方的密钥,你会更好 struct
-s 明确 ---
。
如果您正在使用的库的维护者出于任何原因决定更改其 struct
中元素的顺序,就会出现这种情况。例如,在 OP 案例中,将 — 切换为 Key
Value
您的代码似乎仍然可以正常编译,但是您打算作为键的内容现在将作为值传递,反之亦然,并且事情会以意想不到的方式开始中断。
原文由 antichris 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.4k 阅读
2 回答1.2k 阅读
2 回答1.2k 阅读
2 回答1.3k 阅读
3 回答819 阅读
2 回答989 阅读
1 回答895 阅读
可以通过将检查标志设置为 false 来停止警告。
type E struct { Key string Value interface{} }
”`
有关更多信息,请查看 primitive.E