分支循环
if
主要用于条件判断,语法为:
先看一个简单例子:
package main
import "fmt"
func main() {
age := 7
if age > 6 {
fmt.Println("It's primary school")
}
}
我们可以在条件中使用 &
或 ||
来进行组合判断:
package main
import "fmt"
func main() {
age := 7
if age > 6 && age <= 12 {
fmt.Println("It's primary school")
}
}
我们还可以使用 if
..else if
..else
来实现多分支的条件判断:
package main
import "fmt"
func main() {
age := 13
if age > 6 && age <= 12 {
fmt.Println("It's primary school")
} else if age > 12 && age <= 15 {
fmt.Println("It's middle school")
} else {
fmt.Println("It's high school")
}
}
注意:在 Go 中 switch
只要匹配中了就会中止剩余的匹配项,这和 Java
很大不一样,它需要使用 break
来主动跳出。
switch
的 case
条件可以是多个值,例如:
package main
import "fmt"
func main() {
age := 7
switch age {
case 7, 8, 9, 10, 11, 12:
fmt.Println("It's primary school")
case 13, 14, 15:
fmt.Println("It's middle school")
case 16, 17, 18:
fmt.Println("It's high school")
default:
fmt.Println("The age is unkown")
}
}
注意: 同一个 case 中的多值不能重复。
switch
还可以使用 if..else
作为 case
条件,例如:
package main
import "fmt"
func main() {
age := 7
switch {
case age >= 6 && age <= 12:
fmt.Println("It's primary school")
case age >= 13 && age <= 15:
fmt.Println("It's middle school")
case age >= 16 && age <= 18:
fmt.Println("It's high school")
default:
fmt.Println("The age is unkown")
}
}
package main
import "fmt"
func checkType(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("%v is an in\n", v)
case string:
fmt.Printf("%v is a string\n", v)
default:
fmt.Printf("%v's type is unkown\n", v)
}
}
func main() {
}
使用 for
来进行循环操作,例如:
使用 for..range
对数组、切片、map、 字符串等进行循环操作,例如:
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3}
for i, v := range numbers {
fmt.Printf("numbers[%d] is %d\n", i, v)
}
}
注意: 这里的 i
、v
是切片元素的位置索引和值。
package main
import "fmt"
func main() {
cityCodes := map[string]int{
"北京": 1,
"上海": 2,
}
for i, v := range cityCodes {
fmt.Printf("%s is %d\n", i, v)
}
}
注意: 这里的 i
、v
是 map
的 一组键值对的键和值。
package main
import "fmt"
func main() {
numbers := []int{1, 2, 3, 4, 5}
for i, v := range numbers {
if v == 4 {
break
}
if v%2 == 0 {
continue
}
fmt.Printf("numbers[%d] is %d\n", i, v)
}
}
注意:
- 会结束所有循环。