package main
import "fmt"
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
for i := range pow {
pow[i] = 1 << uint(i) // == 2**i
}
for _, value := range pow {
fmt.Printf("%d\n", value)
}
}
您可以通过分配_来跳过索引或值 .
如果您只想要索引,请完全删除值 .
10
这可能是显而易见的,但您可以像这样内联数组:
package main
import (
"fmt"
)
func main() {
for _, element := range [3]string{"a", "b", "c"} {
fmt.Print(element)
}
}
7 回答
http://golang.org/doc/go_spec.html#For_statements
举个例子:
如果您不关心索引,可以使用
_
:下划线
_
是blank identifier,一个匿名占位符 .迭代 array 或 slice :
迭代 map :
迭代 channel :
迭代通道相当于从通道接收直到它关闭:
以下示例说明如何在
for
循环中使用range
运算符来实现foreach
循环 .该示例遍历一系列函数以统一函数的错误处理 . 一个完整的例子是Google的playground .
PS:它还表明挂括号对于代码的可读性是一个坏主意 . 提示:
for
条件在action()
调用之前结束 . 很明显,不是吗?事实上,您可以使用
range
而不使用for range
对您的类型引用它的返回值:https://play.golang.org/p/XHrHLbJMEd
以下是如何在golang中使用foreach的示例代码
这是一个运行示例https://play.golang.org/p/LXptmH4X_0
是的, Range :
for循环的范围形式在切片或映射上迭代 .
在切片上进行测距时,每次迭代都会返回两个值 . 第一个是索引,第二个是该索引处元素的副本 .
示例:
您可以通过分配_来跳过索引或值 .
如果您只想要索引,请完全删除值 .
这可能是显而易见的,但您可以像这样内联数组:
输出:
https://play.golang.org/p/gkKgF3y5nmt