• 技术文章 >后端开发 >Golang

    golang流程控制语句有哪些

    青灯夜游青灯夜游2022-12-28 18:00:00原创693

    流程控制语句:1、if语句,由一个布尔表达式后紧跟一个或多个语句组成;2、“if…else”语句,else中的表达式在布尔表达式为false时执行;3、switch语句,用于基于不同条件执行不同动作;4、select语句;5、for循环语句,语法“for k,v := range oldmap{newmap[k]=v}”;6、循环控制语句break、continue、goto。

    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

    下面我们了解一下关于golang流程控制语句的基本内容。

    1、条件分支语句

    和c语言类似,相关的条件语句如下表所示:

    语句描述
    if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
    if…else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
    switch 语句switch 语句用于基于不同条件执行不同动作。
    select 语句select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
    if 布尔表达式 {
       /* 在布尔表达式为 true 时执行 */
    }
    if 布尔表达式 {
       /* 在布尔表达式为 true 时执行 */
    } else {
    	/* 在布尔表达式为 false 时执行 */
    }
    switch v {
        case val1:
            ...
        case val2:
            ...
        default:
            ...
    }
    select {
        case communication clause  :
           statement(s);      
        case communication clause  :
           statement(s);
        /* 你可以定义任意数量的 case */
        default : /* 可选 */
           statement(s);
    }

    注意:

    • 每个case必须都是一个通信
    • 所有channel表达式都会被求值,所有被发送的表达式都会被求值
    • 如果任意某一个通信都可以,它就执行,其他就忽略
    • 如果有多个case都可以运行,select就会随机挑选一个来执行。
    • 如果没有一个case可以被运行:如果有default子句,就执行default子句,select将被阻塞,直到某个通信可以运行,从而避免饥饿问题。

    2、循环语句

    2.1 循环处理语句

    与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近。

    go中时使用for实现循环的,共有三种形式:


    语法
    和c语言中的for相同for init; condition; post {}
    和c语言中的while相同for condition{}
    和c语言中的for(;;)相同for{}

    除此以外,for循环还可以直接使用range对slice、map、数组以及字符串等进行迭代循环,格式如下:

    for key, value := range oldmap {
    	newmap[key] = value
    }

    2.2 循环控制语句

    控制语句详解
    break中断跳出循环或者switch语句
    continue跳过当前循环的剩余语句,然后继续下一轮循环
    goto语句将控制转移到被标记的语句

    1、break

    break主要用于循环语句跳出循环,和c语言中的使用方式是相同的。且在多重循环的时候还可以使用label标出想要break的循环。
    实例代码如下:

    a := 0
    for a<5 {
    	fmt.Printf("%d\n", a)
    	a++
    	if a==2 {
    		break;
    	}
    }
    /* output
    0
    1
    2
    */

    2、continue

    Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。在多重循环中,可以用标号 label 标出想 continue 的循环。
    实例代码如下:

        // 不使用标记
        fmt.Println("---- continue ---- ")
        for i := 1; i <= 3; i++ {
            fmt.Printf("i: %d\n", i)
                for i2 := 11; i2 <= 13; i2++ {
                    fmt.Printf("i2: %d\n", i2)
                    continue
                }
        }
    
    /* output
    i: 1
    i2: 11
    i2: 12
    i2: 13
    i: 2
    i2: 11
    i2: 12
    i2: 13
    i: 3
    i2: 11
    i2: 12
    i2: 13
    */
    
        // 使用标记
        fmt.Println("---- continue label ----")
        re:
            for i := 1; i <= 3; i++ {
                fmt.Printf("i: %d", i)
                    for i2 := 11; i2 <= 13; i2++ {
                        fmt.Printf("i2: %d\n", i2)
                        continue re
                    }
            }
    
    /* output
    i: 1
    i2: 11
    i: 2
    i2: 11
    i: 3
    i2: 11
    */

    3、goto

    goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
    示例代码如下:

    var a int = 0
    LOOP: for a<5 {
    	if a == 2 {
    		a = a+1
    		goto LOOP
    	}
    	fmt.Printf("%d\n", a)
    	a++
    }
    
    /*
    output:
    0
    1
    2
    3
    4
    */

    以上代码中的LOOP就是一个标签,当运行到goto语句的时候,此时执行流就会跳转到LOOP标志的哪一行上。

    【相关推荐:Go视频教程编程教学

    以上就是golang流程控制语句有哪些的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:go语言是什么时候出现的 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 详解Win系统下怎么搭建Golang开发环境• 一文浅析Golang中的流程控制• Golang判断结构体是否存在某方法的两种方式(附代码示例)• 一文浅析Golang中的数组• 一文浅析Golang中的切片(Slice)• golang grpc消息过大?教你快速解决!
    1/1

    PHP中文网