当前位置: 首页 > news >正文

Go语言入门-流程控制语句

流程控制

Go语言中有以下几种常见的流程控制语句:

  1. 条件语句(Conditional Statements):

    • if语句:用于根据条件执行代码块。
    • else语句:在if条件不满足时执行的语句块。
    • else if语句:用于在多个条件之间进行判断。
    age := 20if age >= 18 {fmt.Println("成年人")
    } else {fmt.Println("未成年人")
    }score := 85
    if score >= 90 {fmt.Println("优秀")
    } else if score >= 80 {fmt.Println("良好")
    } else {fmt.Println("及格")
    }
    
  2. 循环语句(Loop Statements):

    • for循环:用于重复执行一段代码块,可以指定循环条件、初始语句和后续语句。
    • range循环:用于遍历数组、切片、字符串、映射等数据结构中的元素。
    // for循环
    for i := 1; i <= 5; i++ {fmt.Println(i)
    }
    //for遍历string
    str := "hello,nihao"
    fmt.Println(str)
    fmt.Println("字符串str长度为:", len(str))
    for i := 0; i < len(str); i++ {//fmt.Printf("字节打印:", str[i]) //直接打印是字符的编码fmt.Printf("%c", str[i])
    }
    // range循环
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {fmt.Printf("索引:%d,值:%d\n", index, value)
    }
    //range遍历string
    for i, v := range str {fmt.Printf("索引位置:%d的值为:%c\n", i, v)//索引位置:0的值为:h
    }
    
  3. 选择语句(Selection Statements):

    • switch语句:根据表达式的值选择执行不同的分支。
    num := 2switch num {
    case 1:fmt.Println("选择了1")
    case 2:fmt.Println("选择了2")
    default:fmt.Println("未知选择")
    }fruit := "apple"
    switch fruit {
    case "apple", "pear":fmt.Println("选择了苹果或梨子")
    case "banana":fmt.Println("选择了香蕉")
    default:fmt.Println("未知选择")
    }
    
  4. 跳转语句(Jump Statements):

    • break语句:用于跳出当前循环或switch语句。
    • continue语句:用于跳过当前循环的剩余代码并开始下一次迭代。
    • goto语句:无条件地转移到指定标签的语句。
    for i := 1; i <= 5; i++ {if i == 3 {break // 当i等于3时跳出循环}fmt.Println(i) // 1 2}for i := 1; i <= 5; i++ {if i == 3 {continue // 当i等于3时跳过本次循环,继续下一次循环}fmt.Println(i) //1 2 4 5}i := 0
    Loop:for {i++if i == 3 {goto Loop // 跳转到Loop标签处继续执行循环} else if i == 5 {break Loop // 在第5次循环时跳出循环}fmt.Println(i)//1 2 4}
    

除了上述常见的流程控制语句,Go语言还提供了一些其他的关键字和语句来处理程序的流程控制,如:

  • fallthrough:在switch语句中,用于贯穿到下一个分支的代码块。

    默认情况下,当一个分支的条件满足时,switch语句会执行该分支并终止,不会继续执行其他分支。但是,如果在某个分支使用了fallthrough关键字,那么即使该分支的条件满足,程序也会继续执行下一个分支,无论下一个分支的条件是否满足。

    num := 2switch num {
    case 1:fmt.Println("数字是1")
    case 2:fmt.Println("数字是2")fallthrough
    case 3:fmt.Println("数字是3")
    default:fmt.Println("未知数字")
    }
    

    输出结果:

    数字是2
    数字是3
    
  • select:用于在多个通道操作中进行选择和执行。

    select语句用于在多个通道操作中进行选择和执行。它类似于switch语句,但是针对通道操作。select语句会监听多个通道的操作,一旦有某个通道操作可以进行,就会执行对应的代码块。

    package mainimport ("fmt""time"
    )func main() {ch1 := make(chan string)ch2 := make(chan string)go func() {time.Sleep(2 * time.Second)ch1 <- "Hello from channel 1"}()go func() {time.Sleep(1 * time.Second)ch2 <- "Hello from channel 2"}()select {case msg1 := <-ch1:fmt.Println(msg1)case msg2 := <-ch2:fmt.Println(msg2)}
    }
    

    输出结果:

    Hello from channel 2
    

    因为ch2通道的操作先准备好了,所以程序执行对应的代码块。

  • defer:用于延迟执行函数调用,通常用于释放资源或错误处理。

    defer用于延迟执行函数调用,通常用于释放资源或错误处理。被defer关键字修饰的函数调用会在包含它的函数执行完毕后才执行,即使函数发生了错误也会执行。

    示例代码:

    goCopy Codepackage mainimport "fmt"func main() {defer fmt.Println("这行代码会最后执行")fmt.Println("这行代码会第一个执行")
    }
    

    输出结果:

    这行代码会第一个执行
    这行代码会最后执行
    

    defer语句会将函数调用推迟到包含它的函数执行完毕后执行。

    defer还可以用于关闭文件、释放锁、清理资源等操作,确保在函数结束时这些操作一定会执行,不受返回或错误的影响。

http://www.lryc.cn/news/212405.html

相关文章:

  • 深入探究ASEMI肖特基二极管MBR60100PT的材质
  • python类模拟“对战游戏”
  • Maven第二章:Maven基本概念与生命周期
  • <蓝桥杯软件赛>零基础备赛20周--第3周--填空题
  • 【Linux】VM及WindowsServer安装
  • 【实用教程】MySQL内置函数
  • 第十二节——ref
  • 少儿编程 2023年9月中国电子学会图形化编程等级考试Scratch编程四级真题解析(判断题)
  • 【设计模式三原则】
  • 600MW发电机组继电保护自动装置的整定计算及仿真
  • 【蓝桥每日一题]-字符串(保姆级教程 篇1)#atcoder324C~E题
  • 4.2.1 SQL语句、索引、视图、存储过程
  • 1992-2021年全国各地级市经过矫正的夜间灯光数据(GNLD、VIIRS)
  • 机器人的触发条件有什么区别,如何巧妙的使用
  • 【Qt6】QStringList
  • 代码随想录算法训练营第五十三天|309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费
  • 厚黑学笔记
  • IDEA MyBatisX插件介绍
  • 【PyQt学习篇 · ②】:QObject - 神奇的对象管理工具
  • 【AcWing】1.1.3二分搜索
  • 【Python第三方包】串口通信(pySerial包)
  • VS Code2023安装教程(最新最详细教程)附网盘资源
  • 最优值函数
  • 软考系统架构师知识点集锦十:计算机网络、数学与经济管理、知识产权与标准化
  • 风云七剑攻略,最强阵容搭配
  • 关于ABB 机器人多任务的建立
  • 【计算机网络笔记】传输层——多路复用和多路分用
  • 【PC】特殊空投-2023年10月
  • Android Studio 下载地址
  • General error: 2006 MySQL server has gone away thinkphp6.0 报这个错误怎么修改