for循环的init语句中的变量声明

lin*_*nqu 4 for-loop go

另一个初学者对golang的问题:

我可以写:

for i := 0; i < 10; i++ {}
Run Code Online (Sandbox Code Playgroud)

但如果我想i成为一个特定的类型int64,显然我不应该写:

for var i int64 = 0; i < 10; i++ {}
Run Code Online (Sandbox Code Playgroud)

我很惊讶我无法在for循环的start语句中指定一个类型.我需要写这样的东西:

var i int64
for i = 0; i < 10; i++ {}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了一点吗?它有什么解释吗?

Not*_*fer 10

for循环的语言规范声明:The init statement may be a short variable declaration,它是表单的赋值,i := 0但不是表单的声明var i = 0.至于背后的原因 - 我猜测语言简单.请参见此处:http://golang.org/ref/spec#For_statements

BTW您可以这样做:

for  i := int64(0); i < 10; i++ {
   // i here is of type int64
}
Run Code Online (Sandbox Code Playgroud)