go - 复合文字在引用类型时使用非键字段,但在定义包时不使用
问题描述
我有两个包,db
和service
. 在db
中,我接受由 protobuf 创建的类型并将其包装为另一种类型,如下所示:
type BatchStatus struct {
gopb.BatchInvoiceStatus
}
当我想创建这些对象之一时,我可以这样做:
status := BatchStatus{
gopb.BatchInvoiceStatus{
Id: makeBatchStatusID(mspID, period),
SortKey: makeBatchStatusSortKey(mspID, uuid),
InvoiceStatus: Preparing,
InvoiceType: batchType,
Start: start,
Count: 0,
},
}
正如我所料,这不会出现错误。但是,如果我尝试在services
包中做同样的事情:
status := &db.BatchStatus{
gopb.BatchInvoiceStatus{
Id: makeBatchStatusID(mspID, period),
SortKey: makeBatchStatusSortKey(mspID, uuid),
InvoiceStatus: Preparing,
InvoiceType: batchType,
Start: start,
Count: 0,
},
}
我收到一条警告说db.BatchStatus composite literal uses unkeyed fields
。为什么在BatchStatus
定义的包中不会出现此警告,但在包外引用时会出现?
解决方案
推荐阅读
- javascript - 在 Angular 中动态更新 SVG
- tensorflow - 用于图像分类的多输入卷积神经网络
- python-3.x - 在 Ubuntu 18.04 上使用 Cuda 10 构建 Tensorflow r1.12
- r - 在 R 中计算绝对、相对和累积频率
- c# - DataBinding 附加到 TextBox
- docker - Docker 构建失败:添加失败:
- mysql - 如何在 Mysql 中创建 migration_version 表?
- javascript - 匹配意外模式的内容脚本
- sql - Microsoft Access - 子查询运行速度很慢
- prolog - 具有多个元素条件的 Prolog 排列