【go语言实践】基础篇 - 流程控制

news/2024/10/18 3:29:17/

if语句

go里面if不需要括号将条件表达式包含起来,这与python也有点类似
if 条件表达式 {

}

if num > 18 {// ...
} else if num > 20 {// ...
} else {// ...
}

需要注意的是go支持在if的条件表达式中直接定义一个变量,变量的作用域只在if范围内,如:

if num := 20; num > 5 {// ...
}

这让我们一些场景可以便捷地存储中间变量

switch语句

go语言的switch分支不需要有break语句,这是与c不同的地方。基本语法如下:
switch expression {
case expression1,expression2,…:
// …
case expression3, expression4,…:
// …
// …
default:
// …
}
golang中是允许多个表达式匹配的,比如expression1或expression2,就会执行第一个case。default语句不是必须的,但为了程序稳定通常需要有默认操作。

switch num {
case 1, 2, 3:fmt.Println("num", num)
case 4, 5, 6:num++
default:fmt.Println("not in range")
}

另外,switch后面也可以不带表达式,这时等价于if -else

switch {
case num == 1:// ...
case num == 2:// ...
default:// ...
}

switch后面也可以定义一个变量,分号结束,通常不这样写:

switch num := 90; {
case num > 90:// ...
default:// ...
}

switch fallthrough

在一个case语句中使用fallthrough,则会继续执行下一个case分支,注意这里下一个分支不用判断,直接执行。但通常不用,条件语句已经足够覆盖所有场景

switch num {
case 10:// ...fallthrough
case 20:// ...
default:// ...
}

type-switch(不懂的后面的文章会讲到)

switch语句还可以用来判断某个interface变量中实际指向的变量类型

var x interface
var y = 10.0
x = y
switch i : x.(type) {case nil:// ...case int:// ...case float64:// ...case func(int) float64:fmt.Printf("x 是 func(int)型")case bool, string://default:// ...
}

for循环语句

go语言的for循环也是不需要用()把表达式给包起来,如:

for num := 0; num <= 10; num++ {// ...
}

此外,for循环可以有以下两种写法

for num < 99 {// 只写循环条件的写法
}for {// 什么条件都不写,相当于无限循环,在内部决定循环终止条件
}// 上面的for等价于
for ; ; {
}

for range遍历字符串

另外,go语言也支持fo range的遍历方式,便于遍历字符串和数组,如:

str1 := "hello, zhangping"
for index, val := range str1 {fmt.Printf("index:%d val=%c\n", index, val)
}

for range遍历字符串时,是按照字符来遍历的,而不是按照字节来遍历的。与我们常规字节遍历的区别在于,像遍历中文字符串,for range会打印一整个中文字符,但常规字节遍历会打印单个字节(一个中文两个字节),通常会乱码
传统的方法想要打印中文,需要转换成rune的切片:

str1 := "hello, 张平"
str2 := []rune(str1)
for i := 0; i < len(str2); i++ {fmt.Printf("%c\n", str2[i])// break// coontinue
}

go里面没有while和do while语句,要跳出循环也是break,跳过本次循环continue,另外go语言也支持goto语句跳到任意语句处,但最好不要用。


http://www.ppmy.cn/news/1266242.html

相关文章

云降水物理基础

云降水物理基础 云的分类 相对湿度变化方程 由相对湿度的定义&#xff0c;两边取对数之后可以推出 联立克劳修斯-克拉佩龙方程&#xff08;L和R都为常数&#xff09; 由右式看出&#xff0c;增加相对湿度的方式&#xff1a;增加水汽&#xff08;de增大&#xff09;和降低…

排序算法——归并排序

归并排序&#xff08;Merge Sort&#xff09;是计算机科学中非常重要的排序算法之一。它不仅高效、稳定&#xff0c;而且是许多高级排序技术和算法思想的基础。在本文中&#xff0c;我们将深入探讨归并排序的原理、实现方法&#xff0c;以及它的优缺点。 1. 归并排序的原理 归…

VBA信息获取与处理:在EXCEL中随机函数的利用

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

多维时序 | MATLAB实现SAO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现SAO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现SAO-CNN-BiGRU-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SAO-CNN-B…

做数据分析为何要学统计学(3)——何为置信区间?它有什么作用?

置信区间是统计学中的一个重要工具&#xff0c;用以使用样本参数()来估计总体均值在某置信水平下的范围。通俗一点讲&#xff0c;如果置信度为95%&#xff08;等价于显著水平a0.05&#xff09;&#xff0c;置信区间为[a,b]&#xff0c;这就意味着总体均值落入该区间的概率为95%…

postman中Test断言介绍

Test断言 一&#xff0c;常用断言&#xff1a;1&#xff09;Status code:Code is 200 检查返回的状态码是否为2002&#xff09;Response body:Contains string 检查响应中包括指定字符串3&#xff09;Response body:Json value check 检查响应中其中json的值4&#xff09;Respo…

final的安全发布

final的安全发布 两个关键字“发布”“安全” 所谓发布通俗一点的理解就是创建一个对象&#xff0c;使这个对象能被当前范围之外的代码所使用 比如Object o new Object(); 然后接下来使用对象o 但是对于普通变量的创建&#xff0c;之前分析过&#xff0c;大致分为三个步骤&am…

[Verilog]用Verilog实现并串装换

用Verilog实现并串装换 摘要 一、并串转换模块 并串转换的原理是&#xff1a;先将八位数据暂存于一个四位寄存器器中&#xff0c;然后左移输出到一位输出端口&#xff0c;这里通过load_valid信号指示并行数据输入。 1.1 用移位寄存器实现 module parallel_serial(clk, rst_n,…