去兽医:"composite literal uses unkeyed fields" 与嵌入式类型

Go vet: "composite literal uses unkeyed fields" with embedded types

我有一个简单的结构:

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
}

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

试试这个:

writer = MyWriter{Writer: io.Stdout}

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