可不设定switch后的条件表达式,在此种情况下整个switch结构与if...else...的逻辑等同。
package main
import "fmt"
func main() {
num := 1
switch {
case 0 <= num && num <= 3:
fmt.Println("0-3")
case 4 <= num && num <= 6:
fmt.Println("4-6")
case 7 <= num && num <= 9:
fmt.Println("7-9")
}
}
例子:根据输入的年份月份计算月份的天数?
package main
import "fmt"
func main() {
fmt.Println("请输入年份月份:")
var month int
var year int
fmt.Scanln(&year, &month)
switch month {
case 1, 3, 5, 7, 8, 10, 12:
fmt.Println("31天")
case 4, 6, 9, 11:
fmt.Println("30天")
case 2:
if (year%4 == 0 && year%100 != 0) || (year%400 == 0) {
fmt.Println("29天")
} else {
fmt.Println("28天")
}
default:
fmt.Println("输入的月份有误!")
}
}
3.2 循环结构
接下来,我们来看循环结构,在其它编程语言中,循环结构一般至少包括for、while和do while语句三种,但是在Go语言中,循环结构只有for语句,没有while和do while语句。因为for语句经过变体是可以完全替代其它语句的,这也体现了Go语言的简洁性。
3.2.1 for语句for语句的语法如下:
// 普通循环
for 初始化表达式; 条件表达式; 步进表达式 {
循环体语句
}
首 先执行初始化表达式,然后执行条件表达式,如果条件表达式的结果为真,执行循环体语句和步进表达式。然后再回到条件表达式进行判断,周而复始的重复执行。如果条件表达式的结果为假,直接跳出for循环,意味这整个for循环结束。
普通for循环的流程图:
我们看一个for循环的例子,求1~100的数值的和。
package main
import "fmt"
func main() {
//保存结果
var sum int = 0
// i表示1~100
for i := 1; i <= 100; i++ {
sum = sum + i
}
fmt.Println("sum:", sum)
}
省略表达式1:
package main
import "fmt"
func main() {
var sum int = 0
i := 1
for ; i <= 100; i++ {
sum = sum + i
}
fmt.Println("sum:", sum)
}
省略表达式2:
package main
import "fmt"
func main() {
var sum int = 0
i := 1
for ; ; i++ {
if i > 100 {
break
}
sum = sum + i
}
fmt.Println("sum:", sum)
}
省略表达式3:
package main
import "fmt"
func main() {
var sum int = 0
i := 1
for {
if i > 100 {
break
}
sum = sum + i
i++
}
fmt.Println("sum:", sum)
}
数组循环:
// 数组循环
for i, v := range array {
...
}
注意事项:
1) 只支持for结构,不支持while和do-while结构。
2) 左花括号{必须与for处于同一行。