审查:“复合文字使用未键入的字段”与嵌入式类型

use*_*402 2 warnings go

我有一个简单的结构:

type MyWriter struct {
    io.Writer
}
Run Code Online (Sandbox Code Playgroud)

然后按以下方式使用:

writer = MyWriter{io.Stdout}
Run Code Online (Sandbox Code Playgroud)

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

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

type MyWriter struct {
    w io.Writer
}
Run Code Online (Sandbox Code Playgroud)

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

And*_*are 7

尝试这个:

writer = MyWriter{Writer: io.Stdout}
Run Code Online (Sandbox Code Playgroud)

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