Go 中不允许使用以下 for 循环,
for i := 0, j := 1; i < 10; i++, j++ {...}
以下两个变量的 for 循环的正确等价物是什么?
for (int i = 0, j = 1; i < 10; i ++ , j ++) {...}
原文由 sof 发布,翻译遵循 CC BY-SA 4.0 许可协议
Go 中不允许使用以下 for 循环,
for i := 0, j := 1; i < 10; i++, j++ {...}
以下两个变量的 for 循环的正确等价物是什么?
for (int i = 0, j = 1; i < 10; i ++ , j ++) {...}
原文由 sof 发布,翻译遵循 CC BY-SA 4.0 许可协议
虽然上面的答案被接受了,但它完全满足了需要。但我想对此做一些进一步的解释。
Golang 不支持许多可以用简单的方式完成的事情。 For 循环是最常见的例子。 Go 的 For 循环的美妙之处在于它将许多现代风格的循环合并到一个关键字中。
Golang 同样处理多变量声明和赋值。针对上述问题,我们可以使用Golang提供给我们的这个简单工具来解决多变量for循环。如果您想查看进一步的解释,这个问题提供了进一步的细节和 在一个语句中声明多个变量的 方法。
回到 for 循环,如果我们想声明相同数据类型的变量,我们可以用这个声明它们
var a,b,c string
但是我们在 for 循环中使用简写,这样我们就可以用相同的值来初始化它们
i,j := 0,1
不同的数据类型和不同的值
如果我们想要声明不同类型的变量并想要分配不同的值,我们可以通过分隔变量名称和在 := 之后用逗号分隔不同的值来实现。例如
c,i,f,b := 'c',23423,21.3,false
赋值运算符的使用
稍后,我们可以使用相同的方法为多个变量赋值。
x,y := 10.3, 2
x,y = x+10, y+1
在单个语句中混合结构和普通类型
甚至我们也可以以相同的方式使用结构类型或指针。这是一个迭代链接列表的函数,它被定义为一个结构
func (this *MyLinkedList) Get(index int) int {
for i,list := 0,this; list != nil; i,list = i+1,list.Next{
if(i==index){
return list.Val
}
}
return -1
}
该列表定义为
type MyLinkedList struct {
Val int
Next *MyLinkedList
}
回答原始问题
来到起源问题,简单地可以做到
for i, j := 0, 1; i < 10; i, j = i+1, j+1 {
fmt.Println("i,j",i,j)
}
原文由 Abdul Rehman 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答922 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.2k 阅读
您没有逗号运算符来连接多个语句,但您确实有多个赋值,所以 这有效: