在下面的示例中,我将http.ResponseWriter
嵌入到我自己的名为Response
的结构中。我还添加了一个名为Status
的额外字段。为什么我无法从root
处理函数中访问该字段?
当我在我的根处理函数中打印出w
的类型时,它表示类型main.Response
似乎是正确的,当我打印出结构的值时,我可以看到{{1 }} 在那儿。为什么我不能通过Status
访问?
这是stdout的内容:
w.Status
代码:
main.Response
{ResponseWriter:0xc2080440a0 Status:0}
答案 0 :(得分:3)
w
是http.ResponseWriter
类型的变量。 ResponseWriter
没有字段或方法Status
,只有Response
类型。
http.ResponseWriter
是一种接口类型,由于您的Response
类型实现了它(因为它嵌入了ResponseWriter
),因此w
变量可能包含动态类型的值{ {1}}(在你的情况下确实如此)。
但要访问Response
字段,您必须将其转换为Response.Status
类型的值。使用Type assertion:
Response