当前位置: 首页 > news >正文

Go语言基础--for循环

for循环   

   for循环具有三个可选的组成部分:初始化语句(在循环开始前执行一次)、条件表达式(在每次循环开始前评估)、后处理语句(在每次循环体执行完毕后执行)。Go语言中的循环语句只支持for关键字,而不支持while和do-while结构。

        for 初始化语句; 条件表达式; 后处理语句 {  
            // 循环体  
        }

  • 初始化语句:在循环开始前执行,通常用于初始化一个或多个计数器变量。
  • 条件表达式:在每次循环开始前评估。如果条件为真(true),则执行循环体;如果为假(false),则终止循环。
  • 后处理语句:在每次循环体执行完毕后执行,通常用于更新计数器变量。

示例:

        for i := 0; i <= 10; i++ {

                fmt.Println(i)

        } 

for循环其他格式 

        i := 0

        for i<=10; {

                fmt.Println(i)

        i++

        }

    i := 0

    for {

        if i<=10{

            fmt.Println(i)

        } else {

            break

        }

i++

    }

如果不加break会输出0--10之后继续循环,但是不会再打印,因为是无限循环,go语言中没有缩进要求,只要在括号里就可以

for...range循环 

        for...range循环用于遍历数组、切片、字符串、映射(map)或通道(channel)的元素。它会自动处理索引和值(对于映射,则是键和值)。

        for 索引, 值 := range 集合 {

                // 循环体

        }

  • 索引:对于数组、切片、字符串,是元素的索引;对于映射,是键。
  • :集合中对应索引或键的

示例:

  • 遍历切片:

slice := []int{1, 2, 3, 4, 5}  

for index, value := range slice {  

        fmt.Printf("Index: %d, Value: %d\n", index, value)

}

  • 遍历字符串:

原本的方式遍历 

  var str string = "I like 黑神话悟空"

    str2 :=[]rune(str)

    for i :=0; i<len(str2); i++{

        fmt.Printf("%c \n", str2[i])

    }

    var str string = "I like 黑神话悟空"

    for index,value := range str{

        fmt.Printf("index=%d, value=%c \n",index,value)

    }

忽略索引:

    var str string = "I like 黑神话悟空"

    for  _,value := range str {

        fmt.Printf("value=%c \n", value)

    }

  • 遍历映射:

m := map[string]int{"a": 1, "b": 2, "c": 3}

for key, value := range m { 

        fmt.Printf("Key: %s, Value: %d\n", key, value)  

}

  无限循环

        如果省略了for循环的初始化语句、条件表达式和后处理语句,它将成为一个无限循环,直到你显式地通过break语句退出循环或使用return语句从包含它的函数返回。

for {  
    // 循环体  
    // 可以通过break语句退出循环  
}

示例:

for { 

        fmt.Println("这是一个无限循环,需要手动停止!")  

            // 假设这里有一些条件判断,满足条件时退出循环  
            // break  

}

 案例

算出来1-88能被9整除的数量和累计和

package main

import "fmt"

func main() {

    var a int = 88

    var count int = 0

    var sum int = 0

    for i:=1; i<=a; i++ {

        if i%9 == 0 {

            count++

            sum += i

        }

    }

    fmt.Println(count,sum)

}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • API容易被攻击,如何做好API安全
  • 无源互调自动化测试软件应用案例分享:S参数和互调的高效测试
  • C# 中Linq探讨 Or条件拼接
  • [创业之路-135] :ERP、PDM、EDM、Git各种的用途和区别,硬件型初创公司需要哪些管理工具?
  • WinForm实现窗体跳转,设计模式之单例模式
  • 制作语音数据集: 爬取B站音视频+基于whisper语音识别标注
  • SD NAND的SD模式与SPI模式的初始化
  • Linux使用 firewalld管理防火墙命令
  • 零基础学习Redis(5) -- redis单线程模型介绍
  • Mybatis笔记的后续补充
  • 用C#写一个随机音乐播放器
  • 【现代通信技术】第八章 SDH技术
  • 探索顶级PDF水印API:PDFBlocks(2024年更新)
  • LCD 图片格式转换
  • FreeRTOS 快速入门(三)之任务管理
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • CentOS7 安装JDK
  • JavaScript新鲜事·第5期
  • PAT A1017 优先队列
  • PHP的Ev教程三(Periodic watcher)
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Unix命令
  • Vue.js-Day01
  • vue总结
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 编写符合Python风格的对象
  • 欢迎参加第二届中国游戏开发者大会
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用Gradle第一次构建Java程序
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • Hibernate主键生成策略及选择
  • # Redis 入门到精通(九)-- 主从复制(1)
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • # 安徽锐锋科技IDMS系统简介
  • (30)数组元素和与数字和的绝对差
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • ../depcomp: line 571: exec: g++: not found
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net 基于MiniExcel的导入功能接口示例
  • .net项目IIS、VS 附加进程调试
  • .py文件应该怎样打开?
  • /bin/bash^M: bad interpreter: No such file or directory
  • /etc/fstab 只读无法修改的解决办法
  • [20180129]bash显示path环境变量.txt
  • [BJDCTF 2020]easy_md5
  • [CISCN2019 华东南赛区]Web4
  • [CQOI 2010]扑克牌
  • [FPGA]-时序传输模型分析
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [iOS]如何删除工程里面用cocoapods导入的第三方库