Go语言中有没有foreach
结构?我是否可以使用for
遍历切片或数组
发布于 2014-01-30 00:19:36
下面的示例说明如何在for
循环中使用range
运算符来实现foreach
循环。
func PrintXml (out io.Writer, value interface{}) error {
var data []byte
var err error
for _, action := range []func() {
func () { data, err = xml.MarshalIndent(value, "", " ") },
func () { _, err = out.Write([]byte(xml.Header)) },
func () { _, err = out.Write(data) },
func () { _, err = out.Write([]byte("\n")) }} {
action();
if err != nil {
return err
}
}
return nil;
}
该示例迭代一个函数数组,以统一函数的错误处理。谷歌的playground上有一个完整的例子。
PS:这也表明挂大括号对于代码的可读性来说不是一个好主意。提示:就在action()
调用之前,for
条件结束。很明显,不是吗?
发布于 2017-10-03 13:33:07
以下是如何在golang中使用foreach的示例代码
package main
import (
"fmt"
)
func main() {
arrayOne := [3]string{"Apple", "Mango", "Banana"}
for index,element := range arrayOne{
fmt.Println(index)
fmt.Println(element)
}
}
这是一个运行的示例https://play.golang.org/p/LXptmH4X_0
发布于 2016-09-06 01:32:27
实际上,通过对类型使用for range
,您可以在不引用其返回值的情况下使用range
:
arr := make([]uint8, 5)
i,j := 0,0
for range arr {
fmt.Println("Array Loop",i)
i++
}
for range "bytes" {
fmt.Println("String Loop",j)
j++
}
https://stackoverflow.com/questions/7782411
复制相似问题