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)

}

相关推荐
B站_计算机毕业设计之家23 分钟前
预测算法:股票数据分析预测系统 股票预测 股价预测 Arima预测算法(时间序列预测算法) Flask 框架 大数据(源码)✅
python·算法·机器学习·数据分析·flask·股票·预测
想唱rap1 小时前
C++ list 类的使用
c语言·开发语言·数据结构·c++·笔记·算法·list
l1t1 小时前
利用DuckDB SQL求解集合数学题
数据库·sql·算法·集合·duckdb
yuyanjingtao1 小时前
CCF-GESP 等级考试 2024年9月认证C++四级真题解析
c++·算法·青少年编程·gesp·csp-j/s
微笑尅乐2 小时前
洗牌算法讲解——力扣384.打乱数组
算法·leetcode·职场和发展
Lei_3359672 小时前
[算法]背包DP(01背包、完全背包问题、多重背包、分组背包、混合背包问题、有依赖的背包问题等)
c++·算法
uesowys2 小时前
华为OD算法开发指导-比赛的冠亚季军
算法·华为od
天选之女wow2 小时前
【代码随想录算法训练营——Day48】单调栈——42.接雨水、84.柱状图中最大的矩形
算法·leetcode
不知名。。。。。。。。2 小时前
算法之动态规划
算法·动态规划
lingchen19062 小时前
MATLAB图形绘制基础(一)二维图形
开发语言·算法·matlab