掌握 Go 语言中的循环结构:从基础到高级

2023-12-05

一、if else(分支结构)

1、if 条件判断基本写法
package main
import (
	"fmt"
)
func main() {
	score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}
2、if 条件判断特殊写法
  • if 条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断
package main
import "fmt"
func main() {
	//这里的 score 是局部作用域
	if score := 56; score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	}else {
		fmt.Println("C")
		fmt.Println(score) // 只能在函数内部打印 score
	}
	// fmt.Println(score) //undefined: score
}

二、for(循环结构)

1、for 循环
1、普通 for 循环
package main
import "fmt"
func main() {
	// 打印: 0 ~ 9 的数字
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
}
2、外部定义 i
package main
import "fmt"
func main() {
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++
	}
}
3、省略初始语句
package main
import "fmt"
func main() {
	i := 0
	for ; i < 10; i++ {
		fmt.Println(i)
	}
}
2、打印 0-10 的所有偶数
package main
import "fmt"
func main() {
	// 0 2 4 6 8
	for i := 0; i < 10; i++ {
		if i%2 == 0 {
			fmt.Println(i)
		}
	}
}
3、嵌套循环
package main
import "fmt"
func main() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%vx%v=%v \t", i, j, i*j)
		}
		fmt.Println()
	}
}
/*
1x1=1
2x1=2 	2x2=4
3x1=3 	3x2=6 	3x3=9
4x1=4 	4x2=8 	4x3=12 	4x4=16
5x1=5 	5x2=10 	5x3=15 	5x4=20 	5x5=25
6x1=6 	6x2=12 	6x3=18 	6x4=24 	6x5=30 	6x6=36
7x1=7 	7x2=14 	7x3=21 	7x4=28 	7x5=35 	7x6=42 	7x7=49
8x1=8 	8x2=16 	8x3=24 	8x4=32 	8x5=40 	8x6=48 	8x7=56 	8x8=64
9x1=9 	9x2=18 	9x3=27 	9x4=36 	9x5=45 	9x6=54 	9x7=63 	9x8=72 	9x9=81
*/
4、模拟 while 循环
  • Go 语言中是没有 while 语句的,我们可以通过 for 代替
package main
import "fmt"
func main() {
	k := 1
	for { // 这里也等价 for ; ; {
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break   //break 就是跳出这个 for 循环
		}
		k++
	}
}
5、for range(键值循环)
package main

import "fmt"

func main() {
    str := "abc上海"
    for index,var := range str{
        fmt.Printf("索引:%d,值=%c \n",index, val)
    }
}
/*
索引=0, 值=a
索引=1, 值=b
索引=2, 值=c
索引=3, 值=上
索引=6, 值=海
*/

三、switch case

  • 使用 switch 语句可方便地对大量的值进行条件判断
1、case 一般用法
package main
import "fmt"
func main() {
	score := "B"
	switch score {
		case "A":
			fmt.Println("非常棒")
		case "B":
			fmt.Println("优秀")
		case "C":
			fmt.Println("及格")
		default:
			fmt.Println("不及格")
	}
}
2、case 语句多个值
package main
import "fmt"
func main() {
	n := 2
	switch n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
	case 2, 4, 6, 8:
		fmt.Println("偶数")
	default:
		fmt.Println(n)
	}
}
3、fallthrough 语句
  • fallthrough 语法可以执行满足条件的 cast 的下一个 case,是为了兼容C 语言中的 case 设计
package main
import "fmt"
func main() {
	s := "a"
	switch {
	case s == "a":
		fmt.Println("a")
		fallthrough
	case s == "b":
		fmt.Println("b")
	case s == "c":
		fmt.Println("c")
	default:
		fmt.Println("...")
	}
}
/*
a
b

四、break、continue、goto

1、break 跳出单循环
package main
import "fmt"
func main() {
	k := 1
	for { // 这里也等价 for ; ; {
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break   //break 就是跳出这个 for 循环
		}
		k++
	}
}
2、跳出多重循环
  • 在多重循环中,可以用标号 label 标出想 break 的循环
package main
import "fmt"
func main() {
	lable2:
	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break lable2
			}
			fmt.Println("i j 的值:", i, "-", j)
		}
	}
}
/*
i j 的值: 0 - 0
i j 的值: 0 - 1
 */
3、continue(继续下次循环)
package main
import "fmt"
func main() {
	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue
			}
			fmt.Println("i j 的值", i, "-", j)
		}
	}
}
/*
i j 的值 0 - 0
i j 的值 0 - 1
i j 的值 0 - 3
i j 的值 1 - 0
i j 的值 1 - 1
i j 的值 1 - 3
 */
4、goto(跳转到指定标签)
package main
import "fmt"
func main() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				goto breakTag  // // 设置退出标签
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	return
	breakTag:	// 标签
		fmt.Println("结束 for 循环")
}
/*
0-0
0-1
结束 for 循环
 */
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

掌握 Go 语言中的循环结构:从基础到高级 的相关文章

随机推荐

  • C#学习 - 事件 续

    事件声明 完整声明 using System namespace ConsoleApp1 internal class Program static void Main string args Customer customer new C
  • mybatis-plus自动生成模板

    1 依赖pom
  • python+django在线考试系统vue_7k6gs

    考虑到实际生活中在学生在线考试管理方面的需要以及对该系统认真的分析 将系统按权限进行划分 管理员登入使用本系统涉到的功能主要有首页 个人中心 用户管理 课程信息管理 试卷管理 试题管理 考试管理等功能 管理员用例如图3 1所示 图3 1 管
  • 工作几年了,你真的懂 Redis 嘛?

    大家好 我是伍六七 一个专注于输出 AI 编程内容的在职大厂资深程序员 全国最大 AI 付费社群破局初创合伙人 关注我一起破除 35 诅咒 Redis 基本上是大部分技术公司都会使用的缓存框架 但是我发现很多程序员其实并不懂 Redis 今
  • 深入理解 Go 语言中的接口(interface)

    一 GoLang 接口的定义 1 GoLang 中的接口 在 Go 语言中接口 interface 是一种类型 一种抽象的类型 接口 interface 定义了一个对象的行为规范 只定义规范不实现 由具体的对象来实现规范的细节 实现接口的条
  • 视音频数据处理入门:AAC音频码流解析

    vs调试内存 FF F9满足代码中的if判断条件 上图代码的目的是获取adts帧的长度 如上述评论 aac frame length占用13个bit 覆盖了buffer 3 buffer 4 buffer 5 下图为查找资料所得 用ue查看
  • 西服学术64开《乡村振兴战略下传统村落文化旅游设计》TOP名校友会X推

    西服学术64开 乡村振兴战略下传统村落文化旅游设计 TOP名校友会X推 西服学术64开 乡村振兴战略下传统村落文化旅游设计 TOP名校友会X推
  • 测试用例:微信发红包测试用例(最新版)

    测试 核心 重点 功能 界面 安全性 易用性 兼容性 性能 一 功能测试 1 一对一红包 一对一发出去的红包自己不能领取 一对一红包金额 最多200 2 群发红包 1 拼手气红包 1 是否可以正常选择拼手气红包 2 红包个数 只能是数字 且
  • Synchronized关键字的底层原理

    Synchronized实现 Synchronized创建的时候一个互斥的对象锁 每次只有一个线程可以获取该锁 其底层主要是基于 Monitor 实现的 在对象的对象头中存储了MarkWord存储的就是Monitor的地址 对象的内存结构
  • 这个Java面试加分项,太牛了!!

    如今在java界 Spring可以说是大行其道 很多大厂选择Spring全家桶作为基础开发框架 无数的研发人员 把Spring看作是最好的java项目 现在的java开发方面 Spring的重要性和影响力是有目共睹的 市场需求摆在这里 大厂
  • 转转前端周刊第九十一期

    转转前端周刊 本刊意在将整理业界精华文章给大家 期望大家一起打开视野 如果你有发现一些精华文章想和更多人分享 可以点击我们的公众号名称 将文章链接和你的解读文案发给我们 我们会对内容进行筛选和审核 保留你的推荐人署名 分享给更多的人 1 爱
  • ES如何提高召回率之【词干提取】

    想要提高召回率就需要尽可能匹配相关的文档 其中一个办法就是在索引阶段对词语分析 分词器 的时候提取词干 搜索的时候也取词干 不取词干 es默认使用的是 标准的分词器 是不会取词干的 但是标准分词器是包含小写转换分词过滤器的 也是可以 提高召
  • 使用Visual Studio创建第一个C代码工程

    文章目录 2019创建C工程 创建C文件 运行 上一节我们使用记事本编辑C代码 在命令行运行文件 这种方式只是作为对编译器的了解 实际的开发中一般使用集成开发环境比较多 因为 集成开发环境 操作比较简单 通常可编辑 具有明显错误的提示图标
  • 豆瓣9.2分,250万Python新手入门的最佳选择!蟒蛇书入门到实践

    在此疾速成长的科技元年 编程就像是许多人通往无限可能世界的门票 而在编程语言的明星阵容中 Python就像是那位独领风 骚的超级巨星 以其简洁易懂的语法和强大的功能 脱颖而出 成为全球最炙手可热的编程语言之一 什么样的书能 异常 靠谱 能在
  • [Ubuntu 20.04] 使用Netplan配置网络静态IP

    Netplan 是一个在 Ubuntu 系统中进行网络配置的工具 它提供了一种简单和统一的方式来管理网络配置 包括网络接口 IP 地址 网关 DNS 设置等 以下是 Netplan 的特点和功能 声明性配置 Netplan 使用 YAML
  • 一站式体验涂鸦云开发

    涂鸦智能近些年通过深耕物联网领域 沉淀了强大的IoT底层技术 稳定全面的平台能力 持续的创新能力和深厚的行业落地经验 成为更多企业实现智能化建设及应用能力打造的最佳合作伙伴 正在携手开发者共同推动万物互联时代的到来 为满足各类软硬件厂商 个
  • 数字信号处理_第4个编程实例(信号的采样与重建)

    配套的讲解视频详见 数字信号处理14 1 模拟信号转换至数字信号的过程 哔哩哔哩 bilibili 数字信号处理14 2 冲激串的傅里叶变换及采样过程的时频域表示 哔哩哔哩 bilibili 数字信号处理14 3 信号重建与采样定理及Mat
  • Failed to resolve org.junit.platform:junit-platform-launcher:1.9.3

    springboot 跑 unit test 的时候 如果报错如题的话 可以更改idea 里的 Settings gt HTTP Proxy 配置为 Auto detect proxy settings
  • Python下实现的RSA加密 解密及签名验证功能

    Python下实现的RSA加密 解密及签名 验证功能示例 文章目录 Python下实现的RSA加密 解密及签名 验证功能示例 1 RSA加密 解密功能的实现 2 RSA签名 验证功能的实现 3 结语 RSA加密算法是一种非对称加密算法 它使
  • 掌握 Go 语言中的循环结构:从基础到高级

    一 if else 分支结构 1 if 条件判断基本写法 package main import fmt func main score 65 if score gt 90 fmt Println A else if score gt 75