我看到一些人抱怨 for 循环,大意是“在这个时代,为什么我们必须说 i = 0; i < len; i++?”。
我不同意,我喜欢 for 构造。如果您愿意,可以使用长版本,但惯用的 Go 是
var a = []int{1, 2, 3}
for i, v := range a {
fmt.Println(i, v)
}
for .. range 构造循环遍历所有元素并提供两个值 - 索引 i 和值 v。
range 也适用于地图和频道。
不过,如果您不喜欢任何形式的for,您可以在几行中定义each、map 等:
type IntArr []int
// 'each' takes a function argument.
// The function must accept two ints, the index and value,
// and will be called on each element in turn.
func (a IntArr) each(fn func(index, value int)) {
for i, v := range a {
fn(i, v)
}
}
func main() {
var a = IntArr([]int{2, 0, 0, 9}) // create int slice and cast to IntArr
var fnPrint = func(i, v int) {
fmt.Println(i, ":", v)
} // create a function
a.each(fnPrint) // call on each element
}
打印
0 : 2
1 : 0
2 : 0
3 : 9
我开始非常喜欢 Go :)