这是我参与「第三届青训营 -后端场」笔记创作活动的第2篇笔记。
一、if语句
语法格式:
关键:if后面没有()
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
}
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
} else {
/* 在布尔表达式为 false 时执行 */
}
if 布尔表达式1 {
/* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{
/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{
/* 在上面两个布尔表达式都为false时,执行*/
}
实战:
/**
1、if语句
*/
func Test_06_01(t *testing.T){
//1、常见写法
var num int = 10
if num < 10 {
fmt.Println("<10")
}
fmt.Println(">=10")
//2、变体。(前者相当于进行定义变量初始化,后者进行判断)
if num1 := 20; num1 % 2 == 10 {
fmt.Println("num1是偶数")
}
fmt.Println("num2是奇数")
}
二、switch
2.1、基本用法
1、两种方式:①传入值。②case后跟表达式
小细节:case会进行匹配,一旦匹配到直接结束
/**
2、switch
*/
func Test_06_02(t *testing.T){
/* 定义局部变量 */
var grade string = "B"
var marks int = 90
//①可传入值来作为筛选条件
switch marks {
case 90: grade = "A"
case 80: grade = "B"
case 50,60,70 : grade = "C" //case 后可以由多个数值
default: grade = "D"
}
//2、不传入值,直接case来进行表达式筛选
switch {
case grade == "A" :
fmt.Printf("优秀!\n" )
case grade == "B", grade == "C" :
fmt.Printf("良好\n" )
case grade == "D" :
fmt.Printf("及格\n" )
case grade == "F":
fmt.Printf("不及格\n" )
default:
fmt.Printf("差\n" );
}
fmt.Printf("你的等级是 %s\n", grade );
}
2.2、fallthrough
//3、fallthrouht使用
switch num := 15; num {
default:
fmt.Println("最大")
case 15:
fmt.Printf("是15\n")
fallthrough
case 20:
fmt.Printf("fallthrough成功执行\n")
}
2.3、Type Switch(判断指定类型来执行)
/**
2.3、Type Switch:类型判断
*/
func Test_06_02_02(t *testing.T) {
var x interface{} //预先声明为接口
switch i := x.(type) {
case nil: //nil是一个预先声明的标识符,表示指针、通道、函数、接口、映射或切片类型
fmt.Printf(" x 的类型 :%T",i)
case int:
fmt.Printf("x 是 int 型")
case float64:
fmt.Printf("x 是 float64 型")
case func(int) float64:
fmt.Printf("x 是 func(int) 型")
case bool, string:
fmt.Printf("x 是 bool 或 string 型" )
default:
fmt.Printf("未知型")
}
}
三、for循环
其中的迭代器写法相当于java中的for each:
/**
三、for循环
*/
func Test_06_03(t *testing.T) {
//1、普通for循环
for i := 0; i < 10; i++ {
fmt.Print(i, " ")
}
fmt.Println()
//2、单循环条件
var a = 5
for a < 10 {
fmt.Print(a, " ")
a++
}
fmt.Println()
//3、迭代器遍历:slice、map、数组、字符串等
nums := [6]int{1,2,3,4,5}
for i,x := range nums{
fmt.Println("第",i,"位置,值为:", x)
}
}
四、跳出循环
break:跳出循环体。break语句用于在结束其正常执行之前突然终止for循环
continue:跳出一次循环。continue语句用于跳过for循环的当前迭代。在continue语句后面的for循环中的所有代码将不会在当前迭代中执行。循环将继续到下一个迭代。
五、goto跳转
格式:标签: goto 标签
/**
五、goto跳转标签
*/
func Test_06_05(t *testing.T) {
i := 5
loop: for ; i < 10; i++ {
if i == 8 {
i++
goto loop //跳转到loop标签
}
fmt.Println(i)
}
}