【发布时间】:2015-12-14 22:36:30
【问题描述】:
我收到一条奇怪的错误消息 cannot use []feed literal (type []feed) as type []feed in field value,经过一番摆弄和最小化源代码后,我发现这种情况似乎会产生错误:
type user struct {
Feeds []feed
}
type feed struct{}
func fn() {
type user struct {
Feeds []feed // seems to refer to the outer feed type
}
type feed struct{}
_ = user{
// "cannot use []feed literal (type []feed) as type []feed in field value"
Feeds: []feed{},
}
}
http://play.golang.org/p/gNIGhPwAgl
这是预期的行为还是错误?我花了一些时间阅读语言规范,但找不到任何明确说明作用域中的类型声明顺序应该如何工作的内容。顺序在外部范围内无关紧要,但在内部范围内有关系,这有点不直观。
【问题讨论】:
-
投了反对票。不知道这个问题有什么问题。似乎甚至该语言的一位作者也认为这有点不一致,但有充分的理由。