您现在的位置是:首页 > 技术笔记 > Go语言Go语言

流程控制

冰山2019-01-13【Go语言】人已围观

简介1.运算符
1.1算术运算符
1.2赋值运算符
1.3关系运算符
1.4逻辑运算符
2.部分基本语法
2.1if结构
2.2if-else 结构
2.3if-else if 结构
2.4switch结构
2.5switch-case结构的执行流程
2.6if-else if与switch的比较

1.运算符

 
       GO语言中常见的运算符有算术运算符,赋值运算符,关系运算符,逻辑运算符等。
 

1.1算术运算符

 
运算符 术语 示例 结果
+ 10 + 5 15
- 10 - 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取余) 10 % 3 1
++ 后自增,没有前自增 a=0; a++ a=1
-- 后自减,没有前自减 a=2; a-- a=1

   
   Go语言中不允许隐式转换,所有类型转换必须显式声明(强制转换),而且转换只能发生在两种相互兼容的类型之间。
 

1.2赋值运算符

 
运算符 说明 示例
= 普通赋值 c = a + b 将 a + b 表达式结果赋值给 c
+= 相加后再赋值 c += a 等价于 c = c + a
-= 相减后再赋值 c -= a 等价于 c = c - a
*= 相乘后再赋值 c *= a 等价于 c = c * a
/= 相除后再赋值 c /= a 等价于 c = c / a
%= 求余后再赋值 c %= a 等价于 c = c % a
 

1.3关系运算符


       关系运算符又称为比较运算符,听到比较这个词,可以想到的就是比较大小,例如:大象的重量(1500)>老鼠的重量(1),兔子的寿命(3)>乌龟的寿命(1000),我的年龄(20)==你的年龄(20),提问:比大比小的结果是什么?结果是对或者是错,在GO语言中,怎样表示对于错呢?关系运算的结果是布尔类型的。bool值只有两个,true,false。

GO语言中常见的关系运算符如下:
运算符 术语 示例 结果
== 相等于 4 == 3 false
!= 不等于 4 != 3 true
< 小于 4 < 3 false
> 大于 4 > 3 true
<= 小于等于 4 <= 3 false
>= 大于等于 4 >= 1 true

由以上关系运算符链接的表达式我们称为关系表达式。 
 

1.4逻辑运算符


(1)常见的逻辑运算符如下:
 
运算符 术语 示例 结果
! !a 如果a为假,则!a为真;
如果a为真,则!a为假。
&& a && b 如果a和b都为真,则结果为真,否则为假。
|| a || b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。
     

       有逻辑运算符连接的表达式叫做逻辑表达式,通过以上表格我们发现:逻辑表达式的结果同样也是bool类型。逻辑运算符两边放的一般都是关系表达式或者bool类型的值。

(2)逻辑与 &&,表达式1&&表达式2
 
表达式1 表达式2 表达式1&&表达式2
True True True
False True False
True False False
False False false

(3)逻辑或 ||,表达式1||表达式2
 
表达式1 表达式2 表达式1||表达式2
True True True
True False True
False True True
False False false

(4)逻辑非 !,!表达式
 
表达式 !表达式
True False
False true

(5)其他运算符
 
运算符 术语 示例 说明
& 取地址运算符 &a 变量a的地址
* 取值运算符 *a 指针变量a所指向内存的值
 
(6)运算符优先级

       在Go语言中,一元运算符(一些只需要一个操作数的运算符称为一元运算符(或单目运算符)。)拥有最高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低,如下图所示:
 
优先级 运算符
7 ^      !   
6 *       /    %    << >>&&^
5 +      -     |      ^
4 ==   !=   < <=    >=    >
3 <-
2 &&
1 ||
 

 

2.部分基本语法


2.1if结构


在编程中实现选择判断结构就是用if
if结构基本语法:
if 条件判断{
代码语句
}

       条件判断如果为真(true),那么就执行大括号中的语句,如果为假(false),就不执行大括号中的语句,继续执行if结构后面的代码


2.2if-else 结构


if-else结构基本语法:
if 条件判断{
代码语句
}else{
}

       条件判断如果为真(true),那么就执行大括号中的语句,如果为假(false),执行else括号后面的语句。
 

2.3if-else if 结构


基本语法如下:
if 条件判断{
要执行的代码段
}else if 条件判断{
要执行的代码段
}else if 条件判断{
要执行的代码段
}else if条件判断{
要执行的代码段
}else{
}
通过以上的语法格式我们发现,可以写很多的else if结构。
 
       具体的执行过程:程序首先判断第一个if所带的小括号中的判断条件,如果条件成立,也就是返回一个true,则执行该if所带的大括号中的代码,执行完成后,立即跳出if else-if结构。如果第一个if所带的判断条件不成立,也就是返回一个false,则继续向下进行判断,依次的判断每一个if所带的判断条件,如果成立,就执行该if所带的大括号中的代码,如果不成立,则继续向下判断,如果每个if所带的判断条件都不成立,就看当前这个if else-if结构中是否存在else。如果有else的话,则执行else中所带的代码,如果没有else,则整个 if-else if什么都不做,else可以省略。

Demo演示如下:
考试成绩达90分以上(含90分),评级为A
考试成绩达80分以上(含80分),评级为B
考试成绩达70分以上(含70分),评级为C
考试成绩达60分以上(含60分),评级为D
其余情况,评级为E
 
func main(){
fmt.Println("请输入考试成绩")
var score int
fmt.Scanf("%d",&score)
if score>=90{
fmt.Println("A")
}else if score>=80{
fmt.Println("B")
}else if score>=70{
fmt.Println("C")
}else if score>=60{
fmt.Println("D")
}else{
fmt.Println("E")
}
通过以上代码,我们发现if-else if 结构在进行多条件判断时确实比if, if-else(嵌套)要方便很多,并且结构清晰,阅读性比较强。

 
总结:我们通过前面的案例讲解,可以总结出if结构,if-else结构和if-else if结构应用的场景。
if结构适合:一种的判断
if-else结构适合:两种情况的判断
if-else if 结构适合: 多种情况判断,并且判断都是对区间中的数据进行判断
 

2.4switch结构


switch-case结构语法如下:
switch 变量或者表达式的值{
case 值1:
要执行的代码
case 值2:
要执行的代码
case 值3:
要执行的代码
default:
要执行的代码
}
 

2.5switch-case结构的执行流程


       程序执行到switch处,首先将变量或者表达式的值计算出来,然后拿着这个值依次跟每个case后面所带的值进行匹配,一旦匹配成功,则执行该case所带的代码,执行完成后,跳出switch-case结构。如果,跟每个case所带的值都不匹配。就看当前这个switch-case结构中是否存default,如果有default,则执行default中的语句,如果没有default,则该switch-case结构什么都不做。
 
Demo演示如下:
 
func main(){
var score int=30
switch score{
case 90:
fmt.Println("优秀")
case 80:
fmt.Println("良好")
case 70:
fmt.Println("一般")
case 60:
fmt.Println("及格")
default:
fmt.Println("不及格")
}
}
GO语言中switch-case结构中,case后面默认自带break(终止程序执行),这是与其它语言不同的地方。
 
注意:某个case 后面跟着的代码执行完毕后,不会再执行后面的case,而是跳出整个switch结构, 相当于每个case后面都跟着break(终止),但是如果我们想执行完成某个case后,强制执行后面的case,可以使用fallthrough。
 

2.6if-else if与switch的比较


其实通过上面的案例,我们发现switch能够实现的,我们用if-else if也可以实现,那么反过来呢,if-else if能实现的,我们使用switch能否实现呢?接下来将我们前面用if-else if实现的“考试成绩评定”这道题用switch来实现。
 
func main(){
fmt.Println("请输入考试成绩")

 1/2    1 2 下一页 尾页

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:常量

下一篇:函数

文章评论