(go邮件列表问题记录2)
Compiling error when using struct literal in for loop
编译问题,代码如下,注释内的即编译错误的代码
package main
import "fmt"
type T struct {
Field int
}
func (t T) Next() T {
return T{t.Field+1}
}
func main() {
/* Got error at next for statement:
prog.go:14: syntax error: unexpected { at end of statement
prog.go:17: syntax error: non-declaration statement outside function body
for t := T{1}; t.Field < 10; t = t.Next() {
fmt.Println(t)
} */
// This is fine
t2 := T{1}
for ; t2.Field < 10; t2 = t2.Next() {
fmt.Println(t2)
}
}
虽然说,也许这么写从理论上讲也需要支持,但是这个编译问题并不是严重到go语言非得去立即修正不可,而且对于语法解析,这里真的有很大的难度。。
当然也有规避方法,代码写成这样就可以了。
func main() {
for t := (T{1}); t.Field < 10; t = t.Next() {
fmt.Println(t)
}
}
有疑问加站长微信联系(非本文作者)