分支循环

    if 主要用于条件判断,语法为:

    先看一个简单例子:

    1. package main
    2. import "fmt"
    3. func main() {
    4. age := 7
    5. if age > 6 {
    6. fmt.Println("It's primary school")
    7. }
    8. }

    我们可以在条件中使用 &|| 来进行组合判断:

    1. package main
    2. import "fmt"
    3. func main() {
    4. age := 7
    5. if age > 6 && age <= 12 {
    6. fmt.Println("It's primary school")
    7. }
    8. }

    我们还可以使用 if..else if..else 来实现多分支的条件判断:

    1. package main
    2. import "fmt"
    3. func main() {
    4. age := 13
    5. if age > 6 && age <= 12 {
    6. fmt.Println("It's primary school")
    7. } else if age > 12 && age <= 15 {
    8. fmt.Println("It's middle school")
    9. } else {
    10. fmt.Println("It's high school")
    11. }
    12. }

    注意:在 Go 中 switch 只要匹配中了就会中止剩余的匹配项,这和 Java 很大不一样,它需要使用 break 来主动跳出。

    switchcase 条件可以是多个值,例如:

    1. package main
    2. import "fmt"
    3. func main() {
    4. age := 7
    5. switch age {
    6. case 7, 8, 9, 10, 11, 12:
    7. fmt.Println("It's primary school")
    8. case 13, 14, 15:
    9. fmt.Println("It's middle school")
    10. case 16, 17, 18:
    11. fmt.Println("It's high school")
    12. default:
    13. fmt.Println("The age is unkown")
    14. }
    15. }

    注意: 同一个 case 中的多值不能重复。

    switch 还可以使用 if..else 作为 case 条件,例如:

    1. package main
    2. import "fmt"
    3. func main() {
    4. age := 7
    5. switch {
    6. case age >= 6 && age <= 12:
    7. fmt.Println("It's primary school")
    8. case age >= 13 && age <= 15:
    9. fmt.Println("It's middle school")
    10. case age >= 16 && age <= 18:
    11. fmt.Println("It's high school")
    12. default:
    13. fmt.Println("The age is unkown")
    14. }
    15. }
    1. package main
    2. import "fmt"
    3. func checkType(i interface{}) {
    4. switch v := i.(type) {
    5. case int:
    6. fmt.Printf("%v is an in\n", v)
    7. case string:
    8. fmt.Printf("%v is a string\n", v)
    9. default:
    10. fmt.Printf("%v's type is unkown\n", v)
    11. }
    12. }
    13. func main() {
    14. }

    使用 for 来进行循环操作,例如:

    使用 for..range 对数组、切片、map、 字符串等进行循环操作,例如:

    1. package main
    2. import "fmt"
    3. func main() {
    4. numbers := []int{1, 2, 3}
    5. for i, v := range numbers {
    6. fmt.Printf("numbers[%d] is %d\n", i, v)
    7. }
    8. }

    注意: 这里的 iv 是切片元素的位置索引和值。

    1. package main
    2. import "fmt"
    3. func main() {
    4. cityCodes := map[string]int{
    5. "北京": 1,
    6. "上海": 2,
    7. }
    8. for i, v := range cityCodes {
    9. fmt.Printf("%s is %d\n", i, v)
    10. }
    11. }

    注意: 这里的 ivmap 的 一组键值对的键和值。

    1. package main
    2. import "fmt"
    3. func main() {
    4. numbers := []int{1, 2, 3, 4, 5}
    5. for i, v := range numbers {
    6. if v == 4 {
    7. break
    8. }
    9. if v%2 == 0 {
    10. continue
    11. }
    12. fmt.Printf("numbers[%d] is %d\n", i, v)
    13. }
    14. }

    注意:

    • 会结束所有循环。