go语言基础之逻辑控制

Go语言基础流程控制
if
流程控制是每一种语言控制逻辑走向和执行次序的重要部分,流程控制可以说是每一种语言的经脉
Go语言中主要的流程控制有if和for,而switch和goto主要是为了简化代码,降低重复代码而生的结构,属于扩展类的流程控制

package main

import "fmt"
func main() {
    
    
    //基本if语句
    i := 40
    if i > 18 {
    
    
        fmt.Println("您已经成年了")
    } else {
    
    
        fmt.Println("您是未成年")
    }
    //多判断
    if i > 18 && i < 35 {
    
    
        fmt.Println("您已经成年了")
    } else if i > 35 {
    
    
        fmt.Println("您已经是中年人了")
    } else {
    
    
        fmt.Println("您是未成年")
    }
    //if中添表达式,if中i的作用域只在if中
    if i := 20; i > 18 && i < 35 {
    
    
        fmt.Println("您已经成年了")
    } else if i > 35 {
    
    
        fmt.Println("您已经是中年人了")
    } else {
    
    
        fmt.Println("您是未成年")
    }
}

for
Go语言中的所有循环都可以使用for关键字完成

package main

import "fmt"
func main() {
    
    
    //基础for循环
    for i := 0; i <= 20; i++ {
    
    
        fmt.Printf("%d\n", i)
    }
    //去掉初始语句的fro循环
    i := 0
    for ; i <= 20; i++ {
    
    
        fmt.Printf("%d\n", i)
    }
    //去掉结束语句的for循环
    for i := 0; i <= 20; {
    
    
        fmt.Printf("%d\n", i)
        i++
    }
}

for range
Go语言使用for range遍历数组,切片,字符串,map,通道(channel)
1.数组,切片,字符串,返回索引和值
2.map返回键和值
3.通道返回通道内的值

package main

import "fmt"
func main() {
    
    
    s := "sdfsdfsdf"
    for i, v := range s {
    
    
        fmt.Printf("%d--%c\n", i, v)
    }
}

跳出循环和跳过循环

package main

import "fmt"
func main() {
    
    
    //当i等于5时结束循环(跳出循环)
    for i := 0; i < 10; i++ {
    
    
        if i == 5 {
    
    
            break
        }
        fmt.Printf("%d\n", i)
    }
    fmt.Println("OVER")
    //当i等于5时,跳过本次循环,进行下一次循环
    for i := 0; i < 10; i++ {
    
    
        if i == 5 {
    
    
            continue
        }
        fmt.Printf("%d\n", i)
    }
    fmt.Println("OVER")
}

使用switch可以对大量的值进行判断
default关键字是在switch结构体中所有的case都无法匹配,那么就会默认执行default中的代码

package main

import "fmt"
func main() {
    
    
    i := 2
    switch i {
    
    
    case 1:
        fmt.Println("这是大拇指")
    case 2:
        fmt.Println("这是食指")
    case 3:
        fmt.Println("这是中指")
    case 4:
        fmt.Println("这是无名指")
    case 5:
        fmt.Println("这是小拇指")
    default:
        fmt.Println("无效输入")
    }
    //在switch语句中声明变量,同时case中可以有多个值
    switch p := 0; p {
    
    
    case 1, 3, 5, 7, 9:
        fmt.Println("奇数")
    case 2, 4, 6, 8:
        fmt.Println("偶数")
    default:
        fmt.Println("无效输入")
    }
    //分支还可以使用表达式,这时switch语句就不用再跟判断变量
    ii := 10
    switch {
    
    
    case ii < 18:
        fmt.Println("您还是孩子")
    case ii > 18:
        fmt.Println("您已经成年了")
    }
    //fallthrough语法可以执行满足条件的case的下一个case
    switch i {
    
    
    case 1:
        fmt.Println("这是大拇指")
    case 2:
        fmt.Println("这是食指")
        fallthrough
    case 3:
        fmt.Println("这是中指")
    case 4:
        fmt.Println("这是无名指")
    case 5:
        fmt.Println("这是小拇指")
    default:
        fmt.Println("无效输入")
    }
}

使用goto简化代码

package main

import "fmt"
func main() {
    
    
    //goto+label实现多层for循环跳转
    for i := 0; i < 10; i++ {
    
    
        for j := 'A'; j < 'Z'; j++ {
    
    
            if j == 'C' {
    
    
                goto XX //跳到指定的标签
            }
            fmt.Printf("%d--%c\n", i, j)
        }
    }
XX: //label标签
    fmt.Println("over")
}

猜你喜欢

转载自blog.csdn.net/weixin_44865158/article/details/114484824