首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Golang语言开发栈

    Golang 语言 for 和 for-range 的区别

    除此之外,Golang 语言还引入了另外一个关键字 range,我们也可以配合 for 关键字,使用 for-range循环遍历数据。 本文我们介绍一下使用 for 和 for-range 循环遍历数据的区别。 02 区别 在 Golang 语言程序开发中,经常会使用循环遍历数据,因为 Golang 语言提供了 for-range 范围遍历,可以更加方便的帮助我们循环遍历数据,比如数据和数组指针、切片、字符串、 映射和通道,所以我们比较喜欢使用 for-range 范围遍历替代 for 普通遍历。 实际上,使用范围遍历 for-range 和使用普通遍历 for 是有区别的,因为范围遍历会在遍历之前,先拷贝一份被遍历的数据,然后遍历拷贝的数据。

    1.7K30编辑于 2021-12-27
  • 来自专栏仁扬笔记

    Go 语言 for-range 的两个坑,你踩过吗?

    不知道的同学,大家可以在 https://play.golang.org/ 这里尝试运行一下。

    1.2K00编辑于 2023-07-09
  • 来自专栏生物信息学、python、R、linux

    为什么在python中for-range比while运行的要快

    while循环的时间大概是for-range的两倍。 其实如果对python字节码的反汇编可以看到两者所做的操作数量是不一样的,while要多于for-loop。

    1.6K30发布于 2020-04-01
  • Go语言中的for-range不只是遍历slice和map

    在 Go 语言开发中,for range 是最常用的遍历语法之一。很多开发者可能只知道它可以用来遍历切片(slice)和映射(map),但实际上 for range 的能力远不止于此。

    10910编辑于 2026-03-02
  • 来自专栏AlwaysBeta

    为什么 Go for-range 的 value 值地址每次都一样?

    原文链接: 为什么 Go for-range 的 value 值地址每次都一样? 循环语句是一种常用的控制结构,在 Go 语言中,除了 for 关键字以外,还有一个 range 关键字,可以使用 for-range 循环迭代数组、切片、字符串、map 和 channel 这些数据类型 但是在使用 for-range 循环迭代数组和切片的时候,是很容易出错的,甚至很多老司机一不小心都会在这里翻车。具体是怎么翻的呢?我们接着看。 对于数组、切片或字符串,每次迭代,for-range 语句都会将原始值的副本传递给迭代变量,而非原始值本身。口说无凭,具体是不是这样,还得靠源码说话。 Go 编译器会将 for-range 语句转换成类似 C 语言的三段式循环结构,就像这样:// Arrange to do a loop appropriate for the type.

    61940编辑于 2023-04-30
  • 来自专栏Go技术干货

    一文熟悉 Go 的循环结构 —— for 循环

    for-range除了上面所讲的普通 for 循环的形式,Go 里面还支持一种 for 循环,为 for-range 循环,这是一种什么循环形式呢? ; i++ {fmt.Printf("下标:%d,元素:%d\n", i, nums[i]) }}上述代码,在循环前置语句中,声明数组的下标,然后循环体通过下标值打印数组的元素,我们来看看使用 for-range 的形式代码量少了很多,除了循环体保留了下来,其余部分都融入到了 for-range 的语义里。 小结本文首先介绍了 Go 里面的普通 for 循环,然后由普通 for 循环引出了 for-range 循环,对于数组、切片、Map 等复合数据结构,遍历方式使用 for-range 的形式会更好,特殊的复合数据类型如 Map,遍历方式也只能用 for-range 的形式。

    35000编辑于 2023-10-15
  • 来自专栏CSDNToQQCode

    Go语言学习系列——循环语句:for循环(包括传统for、for-range)——【坚果派-红目香薰】

    ===") for i := 1; i <= 5; i++ { if i%2 == 0 { continue } fmt.Printf("奇数: %d\n", i) } } 2、for-range } } 总结 循环语句要点: 1. for循环特点: Go只有for一种循环语句 初始语句和后置语句是可选的 条件表达式也是可选的 支持break和continue 支持标签 2. for-range 选择合适的循环方式: 计数循环用标准for 遍历数据结构用for-range 条件循环用while形式的for 2. 字符串) 类型转换与推断 常量 常量定义与使用 iota 枚举原理与应用 运算符 算术、逻辑、比较运算符 运算符优先级与结合性 控制结构 条件语句(if-else、switch) 循环语句(for、for-range

    34010编辑于 2025-03-13
  • 来自专栏学院君的专栏

    Go 语言基础入门教程 —— 流程控制篇:循环语句

    for-range 结构 另外,对于可迭代的集合(数组、切片、字典),Go 语言还支持通过 for-range 结构对其进行循环遍历,关于这个循环结构的使用我们前面已经演示过,比如我们要遍历上面的切片 注意事项 综上,在 Go 语言中使用循环语句时,需要注意以下几点: 和条件语句、分支语句一样,左花括号 { 必须与 for 处于同一行; 不支持 whie 和 do-while 结构的循环语句; 可以通过 for-range

    78040发布于 2019-08-08
  • 来自专栏技术面面观

    三分钟学 Go 语言——range深度解析

    int{1, 2, 3} for k, v := range nums { fmt.Printf("key: %v , value: %v \n", k, v) } 这和迭代方式非常适合用for-range a":"a", "b":"b", } for k, v := range kvs { fmt.Printf("key: %v , value: %v \n", k, v) } 函数中for-range for-range 的实现实际上是C风格的for循环 使用index,value接收range返回值会发生一次数据拷贝 如有收获,点个在看,诚挚感谢

    51010发布于 2020-04-21
  • 来自专栏一起学Golang

    Golang并发:并发协程的优雅退出

    1:使用for-range退出 for-range是使用频率很高的结构,常用它来遍历数据,range能够感知channel的关闭,当channel被发送数据的协程关闭时,range就会结束,接着退出for 1go func(in <-chan int) { 2 // Using for-range to exit goroutine 3 // range has the ability to 示例代码中,该协程需要从in通道读数据,还需要定时打印已经处理的数量,有2件事要做,所有不能使用for-range,需要使用for-select,当in关闭时,ok=false,我们直接返回。 协程处理1个通道,并且是读时,协程优先使用for-range,因为range可以关闭通道的关闭自动退出协程。 ,ok可以处理多个读通道关闭,需要关闭当前使用for-select的协程。

    5.6K30发布于 2019-04-11
  • 来自专栏后端

    Golang深入浅出之-Go语言流程控制:if、switch、for循环详解

    条件判断和后置语句的形式:package mainimport "fmt"func main() { for i := 0; i < 5; i++ { fmt.Println(i) }}For-range 遍历for-range结构专门用于遍历数组、切片、字符串、映射或通道:package mainimport "fmt"func main() { fruits := []string{"apple index, fruit := range fruits { fmt.Printf("Index: %d, Fruit: %s\n", index, fruit) }}易错点:在for-range 在实践中注意避免上述易错点,如忘记使用比较运算符、遗漏case标签后的冒号以及在for-range循环中直接修改集合,将有助于提升代码质量与程序稳定性。

    53010编辑于 2024-04-24
  • golang快速入门:流程控制

    3、嵌套循环实现乘法表4、for-range 结构Go 语言还支持通过 for-range 结构对(数组、切片、map)进行循环遍历。 循环总结:不支持 whie 和 do-while 结构的循环语句可以通过 for-range 结构对可迭代集合进行遍历跳转语句break 与 continue 语句Go 语言支持在循环语句中通过 break

    26100编辑于 2025-02-06
  • 来自专栏golang从入门到进阶

    Go 通道迭代到底有多慢?

    最常见的通道迭代写法:展开代码语言:GoAI代码解释//方式1:for-range遍历通道forvalue:=rangech{process(value)}//方式2:手动接收直到关闭for{value 0;j<1000000;j++{ch<-j}close(ch)}()sum:=0forv:=rangech{sum+=v}}}运行结果通常显示:通道迭代慢2~3倍七、实用建议场景推荐方案简单数据遍历用for-range 遍历切片/数组需要并发生产用通道+多个producergoroutine需要流式处理通道+for-range高性能循环避免通道,用切片或回调函数需要取消机制通道+select+context八、总结通道迭代比普通迭代慢

    7110编辑于 2026-02-14
  • 来自专栏aoho求索

    Go 语言入门系列:列表与字典及其遍历

    遍历对于很多 Golang 的内置容器来说,形式都是基本一致的,主要通过 for-range 语法,我们将通过以下的例子分别展示数组、切片和字典的遍历过程,代码如下所示: package main import 小红", 2 : "小张", } for k, v:= range tmpMap{ // k 为键值,v 为对应值 fmt.Println(k, v, " ") } } 通过 for-rangefor-range 遍历的过程中,因为键和值都是通过拷贝的方式进行赋值,对它们进行修改并不会影响到容器内成员的变化,这点需要我们在实际开发中多加注意。 go 语言中主要通过 for-range 语法,文中实际的案例分别展示了数组、切片和字典的遍历过程。Go 语言中提供了 list 列表和 Map 映射关系容器,这两种容器都是我们日常经常使用到的。

    3.8K30发布于 2021-08-06
  • 来自专栏Go语言指北

    Go高阶指南10,一文搞懂 range 实现原理

    实现原理 对于 for-range 语句的实现,从编译器源码 gofrontend/go/statements.cc/For_range_statement::do_lower() 方法中可以看到有如下注释 value_temp // original body // } 遍历 slice 前会先获取 slice 的长度 len_temp 来作为循环次数,循环体中,每次循环会先获取元素值,如果 for-range 使用 for-range 遍历 channel 时只能获取一个返回值。

    3.4K31发布于 2021-09-10
  • 来自专栏Go工具箱

    GoLand/IntelliJ中提高研发效率的5个使用技巧

    3.1 forr - 生成for-range循环 输入forr+Tab,就会出现for-range模板。

    1.1K40编辑于 2023-01-31
  • 来自专栏仁扬笔记

    说说 Go 语言的坑(二)

    上一篇文章 说说 Go 语言 for-range 的坑 说的是 for-range 的,工作中,其实还是遇到蛮多奇奇怪怪的问题,这里也顺便整理了一下,就当作是续集:)先继续看 for-range 的另一个坑

    25100编辑于 2023-07-14
  • 来自专栏猫头虎博客专区

    2014年12月10日 Go生态洞察:Go 1.4版本发布

    for-range循环的语法调整 Go 1.4对for-range循环的语法进行了微调。现在可以写“for range s {”来循环遍历s中的每个项目,而不必指定值、循环索引或映射键。

    28110编辑于 2024-04-09
  • 来自专栏Go工具箱

    Go常见错误集锦之range常踩的那些坑

    在Go语言中,for-range是常用的循环控制语句。本文就带你一起来踩踩使用range时的那些坑。 由于for-range的语法简单,同时我们不用手动处理循环中的条件表达式和迭代计数器变量,所以该方式比起传统的for循环是不容易出错的。 1.2 值拷贝 for-range比起传统的for循环虽然简单,但要想要正确使用range循环,理解每个迭代值是如何被处理的是至关重要的。 通过经典的for循环或for-range循环都可以做到: for i := range accounts { ① accounts[i].balance += 1000 } for i := 0; 一般来说常用的是for-range形式,但也没有规定,只要达到目的就好。 方案二:指针切片 第二种方式就是通过指针类型的切片来更新切片中的元素。

    1.1K10编辑于 2023-01-31
  • 来自专栏跟着asong学Golang

    面试官:go中for-range使用过吗?这几个问题你能解释一下原因吗?

    哈哈哈,戏太足了奥。自导自演可还行。今日分享之前,先放松放松嘛,毕竟接下来的知识,还是需要我们思考的。今天给大家分享的是go中的range,这个我们在实际开发中,是经常使用,但是他有一个坑,使用不好,是要被开除的。但是,今天你恰好看了我这一篇文章,就避免了这个坑,开心嘛~~~。直接笑,别克制,我知道你嘴角已经上扬了。

    55830编辑于 2022-07-07
领券