【原创】go语言学习(四)流程控制
目录:
1、if else语句块
2、for语句
3、switch语句
if else语句块
1、基本语法
if condition { //do something }
if statement; condition {
}
if condition {
//do something
} else if condition {
//do something
} else {
//do something
}
2、练习一
// 奇偶数 func testIf1() { num := 10 // var num int // num = 10 if num%2 == 0 { fmt.Printf("num:%d is even\n", num) } else { fmt.Printf("num:%d is odd\n") } }
3、练习二
// if.. else if 可赋值 func testIf3() { // num := 10 // var num int // num = 10 // if语句块中定义num, num会在语句块中销毁 if num := 11; num%2 == 0 { fmt.Printf("num %d is even\n", num) } else { fmt.Printf("num:%d is odd\n", num) } // 为空 fmt.Printf("num=%d\n", num) }
4、练习三
// 方法 func getNum() int { return 10 } func testIf4() { // if语句块中定义num, num会在语句块中销毁 if num := getNum(); num%2 == 0 { fmt.Printf("num %d is even\n", num) } else { fmt.Printf("num:%d is odd\n", num) } // 为空 fmt.Printf("num=%d\n", num) }
for语句
1、Go语⾔言中只有⼀一种循环 for
for initialisation; condition; post { }
2、练习一
func testFor1() { // for块中定义,结束时i销毁 //for i := 1; i <=10 ; i++ { // fmt.Printf("i=%d\n",i) //} // 不销毁 var i int for i = 1; i <= 10; i++ { fmt.Printf("i=%d\n", i) } fmt.Printf("final:i=%d\n", i) }
3、练习二
// break 跳出循环 continue func testFor2() { var i int for i = 1; i <= 10; i++ { if i > 5 { break // continue } fmt.Printf("i=%d\n", i) } fmt.Printf("final:i=%d\n", i) }
4、练习三
// continue结束本次循环,跳到下次循环 func testFor3() { var i int for i = 1; i <= 10; i++ { if i%2 == 0 { continue } fmt.Printf("i=%d\n", i) } fmt.Printf("final:i=%d\n", i) }
// 二种写法
func testFor4() {
//var i int
//i = 1;
i := 1
for i <= 10 {
fmt.Printf("i=%d\n", i)
i = i + 2
}
fmt.Printf("final:i=%d\n", i)
}
// 三种写法
func testFor5() {
//var i int
//i = 1;
i := 1
for i <= 10 {
fmt.Printf("i=%d\n", i)
i = i + 2
}
fmt.Printf("final:i=%d\n", i)
}
5、练习四
// 多行赋值 func testMultiSign() { //var a int //var b string //var c int a, b, c := 10, "hello", 100 fmt.Printf("a=%d b=%s c=%d\n", a, b, c) } // 多条件for func testFor6() { for no, i := 10, 1; i < 10 && no <= 19; i, no = i+1, no+1 { fmt.Printf("%d * %d = %d", i, no, i*no) } }
5、练习五
// 无限循环for func testFor7() { for { fmt.Printf("hello\n") } }
switch语句
1、case语句
func testIf() { var a int = 2 if a == 1 { fmt.Printf("a=1\n") } else if a == 2 { fmt.Printf("a=2\n") } else if a == 3 { fmt.Printf("a=3\n") } else if a == 4 { fmt.Printf("a=4\n") } else { fmt.Printf("a=5\n") } }
func testSwitch() {
var a int = 2
switch a {
case 1:
fmt.Printf("a=1\n")
case 2:
fmt.Printf("a=2\n")
case 3:
fmt.Printf("a=3\n")
case 4:
fmt.Printf("a=4\n")
case 5:
fmt.Printf("a=5\n")
default:
fmt.Printf("a=??\n")
}
}
2、写法二
func getValue() int { return 6 } // 写法二 func testSwitch2() { switch a := getValue(); a { case 1: fmt.Printf("a=1\n") case 2: fmt.Printf("a=2\n") case 3: fmt.Printf("a=3\n") case 4: fmt.Printf("a=4\n") case 5: fmt.Printf("a=5\n") default: fmt.Printf("a=??\n") } }
3、练习一
func testSwitch3() { switch a := getValue(); a { case 1, 2, 3, 4, 5: fmt.Printf("a>=1 and a<=5\n") case 6, 7, 8, 9, 10: fmt.Printf("a>=6 and a<=10\n") default: fmt.Printf("a > 10\n") } }
4、练习二
func testSwitch4() { var num = 60 switch { case num >= 0 && num <= 25: fmt.Printf("a>=0 and a<=25\n") case num > 25 && num <= 50: fmt.Printf("a > 25 and a <=50\n") case num > 50 && num <= 75: fmt.Printf("a > 50 and a <= 75\n") case num > 75 && num <= 100: fmt.Printf("a > 75 and a <= 100\n") default: fmt.Printf("invalid a = %d \n", num) } }
5、fallthrough 穿透case块,执行下一个case块
// fallthrough 穿透case块,执行下一个case块,执行代码 func testSwitch5() { var num = 60 switch { case num >= 0 && num <= 25: fmt.Printf("a>=0 and a<=25\n") case num > 25 && num <= 50: fmt.Printf("a > 25 and a <=50\n") case num > 50 && num <= 75: fmt.Printf("a > 50 and a <= 75\n") fallthrough case num > 75 && num <= 100: fmt.Printf("a > 75 and a <= 100\n") default: fmt.Printf("invalid a = %d \n", num) } }
6、打印99乘法表
// 打印 99乘法表 func testMulti() { //1*1=1 //1*2=2 2*2=4 //1*3=3 2*3=6 3*3=9 for i := 1; i < 10; i++ { for j := 1; j <= i; j++ { fmt.Printf("%d * %d = %d", j, i, j*i) } fmt.Println() } }