在Go语言编程中,理解运算符的使用和掌握流程控制语句的结构,是编写高效、清晰程序的基础。本文将从运算符和流程控制两大部分进行系统归纳与讲解。
一、运算符
Go语言支持多种运算符,用于执行数学运算、逻辑判断、赋值、位运算等。主要包括以下几类:
(一)算术运算符
用于执行基本的数学运算:
【1】+ (加号):1、正数 2、相加操作。3、字符串拼接
【2】/ (除号):两int类型数据运算,结果一定为整数类型。若浮点类型参与运算,结果为浮点类型。
【3】%(取模):等价公式: a%b=a-a/b*b
【4】++(自增操作):加一操作
-- (自减操作):减一操作
go语言里,++、--操作非常简单,只能单独使用,不能参与到运算中去,且只能在变量后面,不能写在变量前面。
(二)赋值运算符
用于将值赋给变量,包括复合赋值运算:
=:=右侧到值运算清楚后,再赋值给=的左侧
+=, -=, *=, /=, %=:如 a += b 等价于 a = a + b,其他同理。
(三)关系运算符
用于比较两个值,返回布尔值(true 或 false):
==(等于)、!=(不等于)
(大于)、<(小于)
=(大于等于)、<=(小于等于)这些运算符常用于流程控制语句中。
( 四)逻辑运算符
用于逻辑运算,返回布尔值:
&&:逻辑与,只有两个操作数都为true时,结果才为true。具备“短路”特性,若左边为false,右边将不再执行。
||:逻辑或,只要有一个为true,结果就是true。同样具有短路特性。
!:逻辑非,用于取反。
(五)位运算符
用于按位进行与、或、异或操作:
&(按位与)、|(按位或)、^(按位异或)
(六)其他运算符
&:取地址符,返回变量的内存地址。
*:指针解引用,获取指针指向的变量的值。
二、流程控制
流程控制用于控制程序执行的顺序,将程序组织成具有逻辑功能的模块。
1. 顺序结构
最基本的执行结构,程序按照从上到下的顺序依次执行每条语句。
2. 分支结构
(1)if语句
单分支结构:
if 条件 {
// 逻辑代码
}
当条件成立时,执行代码块,Go语言中建议省略条件表达式的圆括号,但花括号{}不能省略。
双分支结构:
if 条件 {
// 条件成立时执行
} else {
// 条件不成立时执行
}
一定会执行其中一个分支。
多分支结构:
if 条件1 {
// 分支1
} else if 条件2 {
// 分支2
} else {
// 默认分支
}
从上往下判断,一旦条件满足,就不会继续执行后续判断。
(2)switch语句
基本语法:
switch 表达式 {
case 值1, 值2:
// 语句块1
case 值3:
// 语句块2
default:
// 默认语句
}
注意事项:
1、switch后是一个表达式(即:常量值、变量、一个又返回值的函数等都可以)
2、case后面的表达式如果是常量值(字面量),则要求不能重复。
3、case后的各个值的数据类型,必须和switch的表达式数据类型一致
4、case后面可以带多个值,使用逗号间隔。比如case值1,值2...
5、case后面不需要带break
6、default语句不是必须的,位置也是随意的。
7、switch后也可以不带表达式,当作if分支来使用。
8、switch后也可以直接声明/定义一个变量分号结束(不推荐)
9、switch穿透,利用fallthrough关键字,如果在case语句块后增加fallthrough,则会继续执行下一个case,也叫switch穿透。
3. 循环结构
Go语言仅支持一种循环结构:for循环。
基本语法:
for 初始语句; 条件表达式; 迭代语句 {
// 循环体
}
示例:
for i := 0; i < 5; i++ {
fmt.Println(i)
}
注意事项:
初始化语句不能使用var声明,应使用:=;
虽然Go只有for一种循环,但可实现类似while和无限循环的效果。
死循环示例:
for {
fmt.Println("你好,Golang")
}
使用 Ctrl+C 可以终止运行。
三、关键字与控制语句
(1)break
用于终止最近的一层循环或switch语句。
在多层循环中,break默认只退出最内层;
可结合标签使用,以退出指定层次的循环。
(2)continue
用于跳过本次循环的剩余部分,立即开始下一次循环。
同样只影响最近的一层循环。
(3)goto(不推荐使用)
无条件跳转到程序中的指定标签。虽在Go语言中被支持,但容易造成代码逻辑混乱,不建议使用。
(4)return
用于结束当前函数的执行,并返回调用处。常用于函数的中止和返回值输出。