js工作者的go学习笔记-go流程控制

Go流程控制

语言分支结构(if…else)

在if后面跟上逻辑表达式或者是boo值,如果成立就执行,不成立就到下一个else中进行执行,如果下一个是else if将继续重复这个步骤

    if condition1{
    
    
        //do something
    }else if condition2{
    
    
        //do something
    }else{
    
    
        //do something
    }

if后面的右大括号必须要和下一个else在一行,否则为非法写法

特殊写法:

    if e:= Condition();e!=nil{
    
    
        fmt.Printf(e)
        return
    }

Condition是任何一个自己定义的有返回值的函数,该表达式意为,如果该函数有返回值,便执行并打印返回值,e!=nil才是该if判断的根据,这样可以将返回值限制在该ifelse语句中

变量的作用范围越小,可能出的错误情况就越少

循环

go中只有for循环,没有while和do while循环

for循环由三个表达式组成,初始语句,条件表达式,结束表达式
这三个表达式每一个都可以不写,但是如果第一个和第二个表达式不存在,需要把分号写上,仅仅只有第一个不存在也要

//标准表达式
    for i:=1;i<10;i++{
    
    }
//无初始语句,初始语句是for循环第一次之前执行的语句,通常用来声明变量
//来使得变量名命名空间在这个for中
    i:= 1
    for ; i<10;i++{
    
    }
//无条件判断语句
    for ; ; i++{
    
    
        if(i<10){
    
    
        break
        }
    }
//无表达式
for{
    
    
    if(i<10){
    
    
    break
    }
    i++
}
//只有条件表达式
    for i<10{
    
    
        i++
    }

上面几个for循环所表达的含义是相通的

并且如果被break,goto,return,panic等表达式强行退出for循环的话,则结束语句不会执行

break可以指定跳出哪一层循环

for range在前面已经讲过

switch

switch的大致用法和javascript中的相似,但是不需要通过break就可以直接跳出,每个case都是一个独立的代码块

var a = "hello"
switch a {
    
    
case "hello":
    fmt.Println(1)
case "world":
    fmt.Println(2)
    fallthrough // 继续判定
case "hello", "world"//一叶多枝
    fmt.Println(3) 
default:
    fmt.Println(0)
}

break 循环

break代表退出循环

package main

import "fmt"

func main() {
    
    

OuterLoop:
    for i := 0; i < 2; i++ {
    
    
        for j := 0; j < 5; j++ {
    
    
            switch j {
    
    
            case 2:
                fmt.Println(i, j)
                break OuterLoop
            case 3:
                fmt.Println(i, j)
                break OuterLoop
            }
        }
    }
}

两个break都代表着要退出循环,并且在break后跟标签代表着可以直接退出循环到某一层,break后面的标签一定是要在for switch select上的

continue

continue代表退出当前循环 停止执行接下来的循环体方法,继续进行下一次循环
也可以和break一样退到指定标签

猜你喜欢

转载自blog.csdn.net/weixin_44846765/article/details/125042766