':
fmt.Println("1.优秀")
default:
fmt.Println("1.错误的输入")
}
switch {
case c == 'E', c == 'e': //可以有多个表达式
fmt.Println("2.不合格")
case c == 'D', c == 'd':
fmt.Println("2.基本合格")
case c == 'C', c == 'c':
fmt.Println("2.合格")
case c == 'B', c == 'b':
fmt.Println("2.良好")
case c == 'A', c == 'a':
fmt.Println("2.优秀")
default:
fmt.Println("2.错误的输入")
}
switch {
case c == 'E':
fmt.Println("3.不合格")
fallthrough //fallthrough会执行下一个case区块
case c == 'e':
fmt.Println("3.真的不合格")
case c == 'D', c == 'd':
fmt.Println("3.基本合格")
case c == 'C', c == 'c':
fmt.Println("3.合格")
case c == 'B', c == 'b':
fmt.Println("3.良好")
case c == 'A', c == 'a':
fmt.Println("3.优秀")
default:
fmt.Println("3.错误的输入")
}
var in interface{} = i
switch data := in.(type) { //类型推断
case int:
fmt.Printf("int: %v\n", data)
case uint:
fmt.Printf("uint: %v\n", data)
default:
fmt.Printf("type: %T\n", data)
}
}
结果如下:
请输入分数:90
优秀
请输入等级:E
1.不合格
2.不合格
3.不合格
3.真的不合格
int: 90
逻辑表达式
注意case可以是单个或多个逻辑表达式
switch {
case c == 'E', c == 'e': //可以有多个表达式
fmt.Println("2.不合格")。
case c == 'D', c == 'd':
fmt.Println("2.基本合格")
case c == 'C', c == 'c':
fmt.Println("2.合格")
case c == 'B', c == 'b':
fmt.Println("2.良好")
case c == 'A', c == 'a':
fmt.Println("2.优秀")
default:
fmt.Println("2.错误的输入")
}
fallthrough
fallthrough会执行下一个case区块
switch {
case c == 'E':
fmt.Println("3.不合格")
fallthrough //fallthrough会执行下一个case区块
case c == 'e':
fmt.Println("3.真的不合格")
case c == 'D', c == 'd':
fmt.Println("3.基本合格")
case c == 'C', c == 'c':
fmt.Println("3.合格")
case c == 'B', c == 'b':
fmt.Println("3.良好")
case c == 'A', c == 'a':
fmt.Println("3.优秀")
default:
fmt.Println("3.错误的输入")
}
类型推断
这个是一个强大的方式,它可以用于推断go语言的接口的类型,不过现在只能简单那介绍一下,你可以将interface{}可以表达任何类型
var in interface{} = i
switch data := in.(type) { //类型推断
case int:
fmt.Printf("int: %v\n", data)
case uint:
fmt.Printf("uint: %v\n", data)
default:
fmt.Printf("type: %T\n", data)
}
循环语句
循环语句只有for
package main
import "fmt"
func main() {
var input int
fmt.Printf("请输入分数(0-5):")
fmt.Scanf("%d", &input)
for i := 0; i < 5; i++ { //正常的for
fmt.Println("loop1:", i)
if i < 2 {
continue //跳过本次执行
}
if i == input {
fmt.Println("loop1: break") //跳出本层循环
break
}
}
i := 0
Loop:
for i < 5 { //去掉;的for循环
fmt.Println("loop2:", i)
for j := 0; j < 5; j++ {
if j == input {
fmt.Println("loop2: break Loop") //跳出Loop标记的循环
break Loop
}
if j == 1 {
break //跳出本层循环
}
}
i++
}
i = 0
for ; i < 5; i++ { //空缺一个元素并带有;的for循环
fmt.Println("loop3:", i)
for j := 0; j < 5; j++ {
if j < 2 {
continue
}
if j == input {
goto Exit //跳出到Exit
}
}
}
return
Exit:
fmt.Println("loop3: Exit")
}
结果如下:
请输入分数(0-5):1
loop1: 0
loop1: 1
loop1: 2
l