Go 流程控制 for、for range 循环

2023-11-19

在Go语言中,for循环是一种常用的流程控制语句,可以重复执行一段代码块,直到满足退出条件。同时,Go语言还提供了for range循环,用于遍历数组、切片、映射和字符串等数据结构。在本篇博客中,我们将介绍Go语言中的for循环和for range循环的用法和示例。

一、for循环

for循环是Go语言中最基本的循环语句。for循环的语法如下:

for initialization; condition; post {
    // 循环体
}

其中,initialization是循环变量的初始化语句,condition是循环的退出条件,post是每次循环后执行的语句。例如,以下代码使用for循环计算1到10的和:

package main

import "fmt"

func main() {
    sum := 0
    for i := 1; i <= 10; i++ {
        sum += i
    }
    fmt.Println("The sum is:", sum)
}

在上面的代码中,循环变量i的初始值为1,每次循环增加1,直到i的值大于10时退出循环。在每次循环中,将i加到sum中。最后输出sum的值。

需要注意的是,循环变量的定义只在for循环的作用域内有效。

二、for range循环

当我们需要遍历一个数组、切片、映射、通道或者字符串时,可以使用for range循环。

for range循环的语法如下:

for index, value := range collection {
    // 循环体
}

其中,index是元素的下标,value是元素的值,collection是要遍历的数据结构。for range循环会遍历整个数据结构,并将每个元素的下标和值赋给indexvalue

需要注意的是,在for range循环中,对于数组和切片等数据结构,index是元素的下标,value是元素的值;对于映射等数据结构,index是键,value是值。

for range循环的优点在于,它可以遍历任何实现了迭代器接口的数据结构,包括数组、切片、映射、通道和字符串等。同时,for range循环可以避免使用传统的for循环时出现的越界、遗漏元素等问题。

以下是一些使用for range循环的示例:

  1. 遍历数组
package main

import "fmt"

func main() {
    arr := [3]int{1, 2, 3}
    for index, value := range arr {
        fmt.Printf("The element at index %d is %d\n", index, value)
    }
}

在上面的代码中,使用for range循环遍历了一个长度为3的数组,并将每个元素的下标和值输出到控制台中。

  1. 遍历切片
package main

import "fmt"

func main() {
    slice := []int{1, 2, 3}
    for index, value := range slice {
        fmt.Printf("The element at index %d is %d\n", index, value)
    }
}

在上面的代码中,使用for range循环遍历了一个长度为3的切片,并将每个元素的下标和值输出到控制台中。

  1. 遍历映射
package main

import "fmt"

func main() {
    m := map[string]int{"a": 1, "b": 2, "c": 3}
    for key, value := range m {
        fmt.Printf("The value of key %s is %d\n", key, value)
    }
}

在上面的代码中,使用for range循环遍历了一个映射,并将每个键和值输出到控制台中。

  1. 遍历字符串
package main

import "fmt"

func main() {
    str := "hello, world"
    for index, value := range str {
        fmt.Printf("The character at index %d is %c\n", index, value)
    }
}

在上面的代码中,使用for range循环遍历了一个字符串,并将每个字符的下标和值输出到控制台中。

总的来说,for range循环是Go语言中常用的流程控制语句之一,可以方便地遍历各种数据结构,避免出现越界、遗漏元素等问题。在实际编程中,我们应该根据需要灵活使用for range循环,以便实现正确的流程控制。

三、总结

for循环和for range循环是Go语言中常用的流程控制语句。for循环可以重复执行一段代码块,直到满足退出条件;for range循环用于遍历数组、切片、映射和字符串等数据结构。在本篇博客中,我们介绍了Go语言中的for循环和for range循环的用法和示例。需要注意的是,在实际编写程序时,应根据需要选择合适的循环语句,以便实现正确的流程控制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go 流程控制 for、for range 循环 的相关文章

随机推荐

  • Qt编程学习笔记

    新建项目 gt 其他项目 gt Empty qmake Project 添加新文件 项目 gt run gt Run in terminal 发现cin gt gt a无法向a输入数据 检查 pro文件发现缺少参数CONFIG consol
  • chrome黑暗模式设置

    1 前言 使用Chrome有很久了 但一直没发现有令人满意的黑暗模式 期间试过通过在谷歌商店中安装黑暗主题 但感觉不好 主要有以下 除了chrome的界面是黑暗模式外 打开其它的页面还是亮模式 我希望黑暗模式支持以下特性 chrome的标签
  • Android ViewPager实现导航页效果

    效果 源码地址 文章翻译自 https www cnblogs com aademeng articles 6238933 html 代码 MainActivity public class MainActivity extends App
  • mysql APPARENT DEADLOCK!!! Complete Status:Managed Threads: 3 (c3p0,druid)

    问题场景 由于在生产环境出现问题 应用挂掉 作为菜鸟运维 解决问题有点忙手忙脚 线上bug修复 重启tomcat 启动报错 错误截图在下面 根据日志分析像是死锁 使用C3P0连接池 tomcat启动完之后 还能正常运行 解决问题经过 网上有
  • v4l2在帧缓冲区预览摄像头

    在应用层通过v4l2 api将采集的摄像头数据yuv转为rgb后写到帧缓冲区达到预览摄像头的目的 程序运行后切换到tty下就可以看到 我的屏幕是bgra格式的 这点要注意 不同屏幕格式不同 不同r g b的偏移通过修改 0x00 lt lt
  • Activiti定时器事件

    定时器事件用于在特定的日期 时间或者周期触发一个事件 它们可以用做开始事件 中间事件 边界事件 边界事件可以是中断的 也可以是非中断的 默认是中断事件 即当触发定时器时 原执行实例会被删除 开始事件定时器 定时器开始事件用于在指定的时间点或
  • 专利检索工具网站分享

    当今有很多专利检索工具可供使用 以下是一些常用的专利检索工具网站 全球专利数据库 https patentscope wipo int search zh search jsf 中国专利数据库 http www pss system gov
  • 爬虫从入门到放弃——开源爬虫框架

    本文参考自知乎 供本人学习使用 作者 老夏 链接 https www zhihu com question 27042168 answer 70821088 目前主流的网络爬虫框架包括但不限于 Nutch Crawler4j WebMagi
  • java yaml配置处理,yaml格式化,yaml节点增加,删除。多yaml合并

    多环境配置文件管理 增加一个配置属性 多套环境配置文件需同时增加 如果忘记了 那么就报错 对多环境配置文件进行管理 使用yaml作为文件时 就涉及到yaml的一些解析 修改 新增操作 java管理yaml 1 环境依赖 2 snakeyam
  • C++基础3:仿函数

    系列文章目录 C 基础 开篇 C 基础1 从const关键字看变量的基础单元 类 C 基础2 构造函数 拷贝构造 赋值运算符重载 文章目录 系列文章目录 前言 一 什么是仿函数 二 实现步骤 1 定义类 2 重载 运算符 3 使用仿函数 4
  • pytorch 2.0初探:和pytorch 1.13的速度对比

    看到pytorch2 0出来了 而且宣传提速明显 一行代码即可提速43 左右 compiled model torch compile model We then measure speedups and validate accuracy
  • tex 表格中内容左对齐/居中/右对齐

    左对齐是l 右对齐是r 居中是c begin table centering caption label tab widgets Notation summary begin tabular l l 就是这里控制每一列的对齐方式 Notat
  • 史上最简单的SpringCloud教程

    在微服务架构中 需要几个基础的服务治理组件 包括服务注册与发现 服务消费 负载均衡 断路器 智能路由 配置管理等 由这几个基础组件相互协作 共同组建了一个简单的微服务系统 一个简答的微服务系统如下图 注意 A服务和B服务是可以相互调用的 作
  • 异常数据检测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 信号分解算法 Matlab基于一维小波分解算法 Wavelet Decomposition 的信号分解算法 部分源码
  • 标准代码书写准则,避免屎山代码风格指南

    牛马程序员 强推 屎山代码风格指南 github 开源地址 https github com trekhleb state of the art shitcode tree master 这是一个你的项目应该遵循的标准代码书写准则的列表 把
  • centos7安装python3.x(多种方式)

    但行好事 莫问前程 有任何疑问请留言 作者有问必答哦 前言 centos系统本身默认安装有python2 x 版本x根据不同版本系统有所不同 可通过 python V 或 python version 查看系统自带的python版本 有一些
  • java POI在excel中插入等比例缩放的图片

    这个缩放的比例不是很准确 但还凑合能用 目前本人找不到其它方法 就先用这个 先看一个关键的API方法 void org apache poi ss usermodel Picture resize double scaleX double
  • DES加解密算法

    DES加解密算法 单密钥对称加解密算法 入口参数有三个 key data mode key为加密解密使用的密钥 data为加密解密的数据 mode为其工作模式 当模式为加密模式时 明文按照64位进行分组 形成明文组 key用于对数据加密 当
  • githubActions部署文件到服务器

    示例 githubAction配置示例 ssh秘钥方式 首先在服务器生成秘钥 参考https github com easingthemes ssh deploy 安装 rsync apt get install rsync 参考 参考 n
  • Go 流程控制 for、for range 循环

    在Go语言中 for循环是一种常用的流程控制语句 可以重复执行一段代码块 直到满足退出条件 同时 Go语言还提供了for range循环 用于遍历数组 切片 映射和字符串等数据结构 在本篇博客中 我们将介绍Go语言中的for循环和for r