流程控制
if、else语句
package main
import (
"fmt"
"strconv"
)
// // 1、if/else分支判断
// func if1() {
// //1、if
// if 条件1 {
// }
// //2、if/else
// if 条件2 {
// } else {
// }
// //3、多次判断
// if 条件3 {
// } else if 条件 {
// } else if 条件 {
// }
// }
//2、判断是否报错
func if2() {
var str string
fmt.Scanf("%s", &str)
number, err := strconv.Atoi(str)
if err != nil {
fmt.Println("convert faild,err:", err)
return
}
fmt.Println(number)
}
func main() {
if2()
}
switch、case语句
package main
import (
"fmt"
"math/rand"
)
//1、if分支判断或者使用switch case语句 (switch 后面有条件)
func switch3() {
var a int
fmt.Scanf("%s", &a)
fmt.Printf("%T", a)
switch a {
case 0:
fmt.Println("a is eq 0")
fmt.Println("yes", 0)
fallthrough //这个分支执行完成后,继续往下面的分支走
case 10, 11:
fmt.Println("a is eq 10")
default:
fmt.Println("a is eq default")
}
}
//2、if分支判断或者使用switch case语句 (switch 后面无条件,case后面是条件)
func switch4() {
var a int
fmt.Scanf("%s", &a)
switch {
case a > 0 && a < 10:
fmt.Println("a is eq 0")
fmt.Println("yes", a)
case a > 10:
fmt.Println("a is eq 10")
default:
fmt.Println("a is eq default")
}
}
//3、使用switch case语句 (switch 后面有条件,case后面是条件)
func switch5() {
var a int
fmt.Scanf("%s", &a)
switch a := 100; {
case a > 0 && a < 10:
fmt.Println("a is eq 0")
fmt.Println("yes", a)
case a > 10:
fmt.Println("a is eq 10")
default:
fmt.Println("a is eq default")
}
}
//4、猜数字练习,随机生成一个0到100的数,用户在终端输入数字,如果等于n,提示猜对了,如果不相同,提示大于还是小于
func nums() {
var n int
n = rand.Intn(100) //100以内的随机数
for {
var input int
fmt.Scanf("%d\n", &input)
flag := false
switch {
case input == n:
fmt.Println("you are right")
flag = true
case input > n:
fmt.Println("bigger")
default:
fmt.Println("less")
}
if flag {
break
}
}
}
//5、case后面可以是多个值
switch n:=7;n{
case 1,3,5,7,9:
fmt.Println("奇数")
case 2,4,6,8,0:
fmt.Println("偶数")
default:
fmt.Println("n")
}
func main() {
nums()
}
for 语句
// for语句的写法:
// for 初始化语句;条件判断;变量修改{
// }
// for 变形1
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// for 变形2
var i = 0
for ; i < 10; i++ {
fmt.Println(i)
}
fmt.Println(i)
// for 变形3
var j = 0
for j < 10 {
fmt.Println(j)
j++
}
// for 变形4
for {
fmt.Println("无限循环")
}
for range
//2、for range语句,用来遍历数组,slice,map,chan
func for2() {
str := "hello world,中国"
for i, v := range str {
fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
}
}
break/continue
break 终止本层的for循环
continue 跳出本次循环,继续下次循环
//3、break continue语句
func for3() {
str := "hello world,中国"
for i, v := range str {
if i > 2 {
continue
}
if i > 3 {
break
}
fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
}
}
goto和label语句
//4-1、goto和label语句
func for4() {
label1:
for i := 0; i <= 5; i++ {
for j := 0; j <= 5; j++ {
if j == 4 {
continue label1 //continue label1,就直接跳转到label1的地方再次执行代码(内层的for循环会终止)
}
fmt.Printf("i is: %d,and j is:%d\n", i, j)
}
}
}
//4-2、goto和label语句(here)
func for4_2() {
i := 0
here:
println(i)
i++
if i == 5 {
return
}
goto here //这个只能在同一个函数里面去goto到指定代码,继续执行代码
}
func main() {
// prints(10)
// for1(10)
// for2()
// for3()
// for4()
for4_2()
}
来源:https://blog.csdn.net/qq_34857250/article/details/100569690