Go中有foreach循环吗?

新手上路,请多包涵

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

原文由 tatsuhirosatou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 735
2 个回答

来自 _带有范围子句的 For 语句_:

带有“range”子句的“for”语句遍历数组、切片、字符串或映射的所有条目,或通道上接收的值。对于每个条目,它将迭代值分配给相应的迭代变量,然后执行该块。

举个例子:

 for index, element := range someSlice {
    // index is the index where we are
    // element is the element from someSlice for where we are
}

如果您不关心索引,可以使用 _

 for _, element := range someSlice {
    // element is the element from someSlice for where we are
}

下划线 _空白标识符,匿名占位符。

原文由 Keith Thompson 发布,翻译遵循 CC BY-SA 4.0 许可协议

Go 有一个类似 foreach 的语法。它支持数组/切片、映射和通道。

遍历 数组切片

 // index and value
for i, v := range slice {}

// index only
for i := range slice {}

// value only
for _, v := range slice {}

遍历 地图

 // key and value
for key, value := range theMap {}

// key only
for key := range theMap {}

// value only
for _, value := range theMap {}

迭代一个 通道

 for v := range theChan {}

遍历通道等同于从通道接收直到关闭:

 for {
    v, ok := <-theChan
    if !ok {
        break
    }
}

原文由 Zippo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题