if语句,switch语句,for循环,range迭代,break,continue,goto
源代码
package main
import (
"fmt"
"time"
)
func main() {
//1、if语句
s := "loss"
//注意if语句后面的判断条件没有()
if s == "rich" {
fmt.Println("钱多多")
}
//if支持一个初始化语句,初始化语句和判断条件以分号隔开
//此时a是局部变量
if a := 10; a == 10 {
fmt.Println("a == 10")
}
a := 11
if a == 10 {
fmt.Println("a == 10")
} else {
fmt.Println("a != 10")
}
b := 9
if b == 8 {
fmt.Println("b == 8")
} else if b > 8 {
fmt.Println("b > 8")
} else if b < 8 {
fmt.Println("b < 8")
} else {
fmt.Println("impossible")
}
//2、switch语句
var num int
fmt.Printf("请输入楼层:")
fmt.Scan(&num)
switch num {
case 1:
fmt.Println("按下的是1楼")
// break //go语言保留了break关键字,跳出switch语句,不用写,默认就包含
fallthrough //不跳出switch语句,后面的无条件执行,如果num==1,则会执行case1和case2
case 2:
fmt.Println("按下的是2楼")
case 3:
fmt.Println("按下的是3楼")
case 4:
fmt.Println("按下的是4楼")
default:
fmt.Println("按下的是xx楼")
}
//switch扩展1
switch num := 3; num { //支持一个初始化语句,和变量以分号隔开
case 1:
fmt.Println("按下的是1楼")
case 2:
fmt.Println("按下的是2楼")
case 3, 4, 5: //case后面可以跟多个值
fmt.Println("按下的是345楼")
case 6:
fmt.Println("按下的是6楼")
default:
fmt.Println("按下的是xx楼")
}
//switch扩展2
score := 85
switch { //可以没有条件
case score > 90: //case后面跟条件
fmt.Println("优秀")
case score > 80:
fmt.Println("良好")
case score > 70:
fmt.Println("一般")
default:
fmt.Println("其他")
}
//3、for循环
//for 初始化条件;条件判断;条件变化{ }
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Printf("sum = %d\n", sum)
str := "abc"
for i := 0; i < len(str); i++ {
fmt.Printf("str[%d] = %c\n", i, str[i])
}
//4、range
//迭代打印每个元素,默认返回2个值:元素的位置和元素的值
for i, data := range str {
fmt.Printf("str[%d] = %c\n", i, data)
}
for i := range str { //丢弃第二个返回值不用,只返回元素下标,也可以写成for i,_:=range str
fmt.Printf("str[%d] = %c\n", i, str[i])
}
//5、break和continue
//break is use in a loop, switch, or select
//continue is use in a loop
k := 0
for {
k++
time.Sleep(time.Second)
if k == 5 {
break //跳出循环,如果嵌套多个循环,跳出最近的那个内循环
// continue //跳出本次循环,继续执行下一次循环
}
fmt.Printf("k = %d\n", k)
}
//6、goto
//goto可以用在任何地方,但不能跨函数使用
fmt.Println("11111111111111")
goto End //goto是关键字,End是用户起的名字,叫标签
fmt.Println("22222222222222")
End:
fmt.Println("33333333333333")
}
打印输出
a == 10
a != 10
b > 8
请输入楼层:1
按下的是1楼
按下的是2楼
按下的是345楼
良好
sum = 5050
str[0] = a
str[1] = b
str[2] = c
str[0] = a
str[1] = b
str[2] = c
str[0] = a
str[1] = b
str[2] = c
k = 1
k = 2
k = 3
k = 4
11111111111111
33333333333333