Logic control based on go language

Go language basic flow control
if
flow control is an important part of every language control logic direction and execution sequence, flow control can be said to be the meridian of each language The
main flow control in Go language is if and for, and switch and goto Mainly to simplify the code and reduce the structure of repetitive code, which belongs to the extended type of process control

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("您是未成年")
    }
}


All loops in the for Go language can be completed using the for keyword

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 language uses for range to traverse array, slice, string, map, channel (channel)
1. Array, slice, string, return index and value
2. Map return key and value
3. Channel return value in channel

package main

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

Jump out of the loop and skip the loop

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")
}

Use switch to judge a large number of values. The
default keyword is that all the cases in the switch structure cannot be matched, so the code in default will be executed by 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("无效输入")
    }
}

Use goto to simplify the code

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")
}

Guess you like

Origin blog.csdn.net/weixin_44865158/article/details/114484824