不明白Go中的构图

时间:2015-05-15 07:12:09

标签: struct interface go composition

在下面的示例中,我将http.ResponseWriter嵌入到我自己的名为Response的结构中。我还添加了一个名为Status的额外字段。为什么我无法从root处理函数中访问该字段?

当我在我的根处理函数中打印出w的类型时,它表示类型main.Response似乎是正确的,当我打印出结构的值时,我可以看到{{1 }} 在那儿。为什么我不能通过Status访问?

这是stdout的内容:

w.Status

代码:

main.Response
{ResponseWriter:0xc2080440a0 Status:0}

1 个答案:

答案 0 :(得分:3)

whttp.ResponseWriter类型的变量。 ResponseWriter没有字段或方法Status,只有Response类型。

http.ResponseWriter是一种接口类型,由于您的Response类型实现了它(因为它嵌入了ResponseWriter),因此w变量可能包含动态类型的值{ {1}}(在你的情况下确实如此)。

但要访问Response字段,您必须将其转换为Response.Status类型的值。使用Type assertion

Response