首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Go中有foreach循环吗?

Go中有foreach循环吗?
EN

Stack Overflow用户
提问于 2011-10-16 12:47:33
回答 5查看 460.3K关注 0票数 666

Go语言中有没有foreach结构?我是否可以使用for遍历切片或数组

EN

回答 5

Stack Overflow用户

发布于 2014-01-30 00:19:36

下面的示例说明如何在for循环中使用range运算符来实现foreach循环。

代码语言:javascript
复制
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条件结束。很明显,不是吗?

票数 13
EN

Stack Overflow用户

发布于 2017-10-03 13:33:07

以下是如何在golang中使用foreach的示例代码

代码语言:javascript
复制
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

票数 13
EN

Stack Overflow用户

发布于 2016-09-06 01:32:27

实际上,通过对类型使用for range,您可以在不引用其返回值的情况下使用range

代码语言:javascript
复制
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://play.golang.org/p/XHrHLbJMEd

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7782411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档