文章目录
一、前言
Go系列文章:
- GO开篇:手握Java走进Golang的世界
- 2 Go开发环境搭建、Hello World程序运行
- 3 Go编程规约和API包
- 4 Go的变量、常量、运算符
- 5 Go 基本数据类型
- 6 Go 复杂数据类型之指针
Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html
二、if
if 语句由布尔表达式后紧跟一个或多个语句组成。
if分支结构和其他语言是一样的概念,仅仅API的使用上有细微差别。
1、单分支
基本语法:
if(条件表达式){
逻辑代码
}
当条件表达式为true时,会执行{}中的逻辑代码。
package main
import"fmt"funcmain(){
age :=35if age >=35{
fmt.Println("正式工作了,开整开整")}}
Go语法规范:
- 条件表达式左右的()可以不写,建议不写;
- if和表达式中间,一定要有空格;
- {}是必须有的,哪怕只写一行代码;在Java中if代码块中仅有一行代码时,可以省略{}
2、双分支
基本语法:
if 条件表达式 {
逻辑代码1}else{
逻辑代码2}
当条件表达式成立时,执行逻辑代码1;否则执行逻辑代码2。
funcmain(){
age :=35if age >=35{
fmt.Println("正式工作了,开整开整")}else{
fmt.Println("该吃吃该喝喝,耍一耍")}}
Go语法规范
- else 和 } 不能分行。下面的代码编写方式是错误的
if 条件表达式 { 逻辑代码1}else{ 逻辑代码2}
3、多分支
基本语法:
if 条件表达式1{
逻辑代码1}elseif 条件表达式2{
逻辑代码2}else{
逻辑代码3}
如果走了一个分支,其他分支不会再去判断执行。
package main
import"fmt"funcmain(){
age :=35if age >=35{
fmt.Println("正式工作了,开整开整")}elseif age <=3{
fmt.Println("good good study, day day up")}else{
fmt.Println("该吃吃该喝喝,耍一耍")}}
三、switch
switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面不需要再加 break;默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。
1、基本语法
语法:
switch 表达式 {case value1...:
代码逻辑1case value5,value6...:
代码逻辑2case value7...:
代码逻辑3default:
代码逻辑4}
package main
import"fmt"funcmain(){
score :=98// 根据分数判断等级switch score /10{case9,10:
fmt.Println("优秀")case7,8:
fmt.Println("良好")case6:
fmt.Println("及格")default:
fmt.Println("不及格")}}
default是用来“兜底”的一个分支,当其它case分支都不走时会走default分支。
2、语法规范
1)switch
- switch后是一个表达式,可以是常量值、变量、有返回值的函数… - 在Java中,常用的Java8里,支持的数据类型为:byte、short、int、long、char、String、enum。
- switch后可以不跟表达式,直接仿作if分支来使用;
- switch后也可以直接声明/定义一个变量,分号结束,不推荐使用
- switch穿透:利用fallthrough关键字,如果在case语句块后增加fallthrough ,则会继续执行下一个case,default也能穿透到;
2)case
- case后面的值如果是常量值,不能重复;
- case后值的数据类型 必须和switch表达式返回值的数据类型一致;
- case后可以跟多个值,使用逗号间隔,比如:case value1,value2,value3
- case后面不需要加break;默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。
3)default
- default分支可以放在任意位置上,不一定非要放在最后;
四、总结
go语言中对if、switch语法的要求更加严格,相对于Java等高级语言而言,也有了更多的特性:比如:switch支持表达式、支持穿透、case支持多个值。
对比Java来看
1)if
Go中的if和Java中的if使用相同,Go语言中只是把if后面的小括号给去掉了。
Java中的if
if(num >10){....}
Go中的if
if num >10{....}
2)switch
Go中的switch和Java中的switch使用基本相同;区别在于:
- Go中把switch后面的小括号给去掉了;
- Go中的switch每一个case中不需要写break,Java需要写(不写,则全部穿透)。
- Go中的switch特性更加丰富,支持表达式、支持穿透、case支持多个值。 - Java中不支持case多个值。
Java中的switch
int score =98;// 根据分数判断等级switch(score /10){case10:case9:System.out.println("优秀");case8:case7:System.out.println("良好");break;case6:System.out.println("及格");break;default:System.out.println("不及格");break;}
Go中的switch
score :=98// 根据分数判断等级switch score /10{case9,10:
fmt.Println("优秀")// switch穿透, 继续执行下一个casefallthroughcase7,8:
fmt.Println("良好")case6:
fmt.Println("及格")default:
fmt.Println("不及格")}
版权归原作者 秃秃爱健身 所有, 如有侵权,请联系我们删除。