Go Vet警告: 在使用嵌入类型时,复合字面量使用了未命名的字段。

10

我有一个简单的结构:

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
}

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

1个回答

33

试试这个:

writer = MyWriter{Writer: io.Stdout}
Embedded structs具有隐式键,该键为类型名称本身,不带包前缀(例如,在本例中为Writer)。

谢谢,问题已解决! - user2969402
1
谢谢。你能告诉我官方文档在哪里吗? - mc9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接