【问题标题】:Go vet: "composite literal uses unkeyed fields" with embedded types去审查:“复合文字使用无键字段”与嵌入式类型
【发布时间】:2018-09-02 19:41:53
【问题描述】:

我有一个简单的结构:

type MyWriter struct {
    io.Writer
}

然后我以以下方式使用它:

writer = MyWriter{io.Stdout}

当运行go vet 时,这给了我一个composite literal uses unkeyed fields

为了解决这个问题,我是否必须通过添加键将 io.Reader 转换为 MyWriter 结构中的字段?

type MyWriter struct {
    w io.Writer
}

还有其他方法可以解决这个问题吗? 我在here 上找到的唯一其他答案建议完全禁用检查,但我宁愿不这样做并找到合适的解决方案。

【问题讨论】:

    标签: go warnings


    【解决方案1】:

    试试这个:

    writer = MyWriter{Writer: io.Stdout}
    

    嵌入式结构具有类型名称本身的隐式键,没有包前缀(例如,在这种情况下,Writer)。

    【讨论】:

    • 谢谢,解决了!
    • 谢谢。您能否也将我指向说明它的官方文档?
    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 2018-04-19
    • 2019-07-22
    • 2016-07-16
    • 2021-03-17
    • 2018-05-21
    • 2015-12-09
    • 2016-08-29
    相关资源
    最近更新 更多