繁华开满天机
我看到几个人抱怨“ for-loop”,类似“为什么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 : 21 : 02 : 03 : 9我开始非常喜欢Go :)