2 回答

TA贡献1982条经验 获得超2个赞
根据Go 语言规范:如果您选择以下形式的语句ForClause:
ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] .
的定义InitStmt:
SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment
| ShortVarDecl .
所以你可以看到如果你想在for语句中创建一个新变量,它只能是一个短变量声明,像这样:
for i := 0; i < 10; i++ {}
Short 变量声明可用于声明任何类型的新变量,变量的类型为右侧对应的初始化值的类型。
让我们仔细检查一下:
i := 0
右侧有0:它是一个无类型的数字常量。请注意,Go 中的无类型常量具有默认类型,如果需要类型,则使用该类型,就像这种情况。因此,无类型整数常量的默认类型是int变量i将具有int类型。
如果您希望它具有 type int64,请使用具有int64type的表达式,如下所示:
for i := int64(0); i < 10; i++ {} // Explicit type conversion
const ZERO int64 = 0
for i := ZERO; i < 10; i++ {} // Typed constant
var vzero int64
for i: = vzero; i < 10; i++ {} // Expression of type int64
或者i在for使用var声明的语句之前创建变量:
var i int64
for i = 0; i < 10; i++ {} // Variable is declared before for using "var"
请注意,最后一个示例不使用短变量声明,只是一个简单的赋值。
添加回答
举报