Go语言:条件语句

简介: Go语言:条件语句

条件语句是编写程序的人通过指定一个或多个条件,并通过测试条件结果是否为 true 来决定是否执行指定语句,并在条件为 false 的情况再执行另外的语句。

image.gif


Go没有三目运算符,所以不支持?:形式的条件判断。

if语句

由一个布尔表达式后紧跟一个或多个语句组成。

基本语法:

if  条件表达式{

       执行代码块

}

执行代码块 说明:当条件表达式为ture时,就会执行{}的代码。 注意{}是必须有的,就算你只写一行代码。

另外需要注意的是,Go语言的条件表达式不能用()括起来,条件表达式和if之间用一个空格隔开就行。


if..else语句

if语句后可以使用可选的else语句,else语句中的表达式在布尔表达式为false时执行。

基本语法:

if  条件表达式{

       执行代码块1

} else {

       执行代码块2

}

image.gif


if嵌套语句

你可以在if或else if语句中嵌入一个或多个if或else if语句。

基本语法:

if条件表达式{

       if条件表达式{

               } else {

                      }

}

说明:嵌套分支不宜过多,建议控制在3层内。


switch语句

    • switch语向用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,直到匹配为止。
    • 匹配项后面也不需要再加break,执行完case就直接退出switch语句

    基本语法:

    switch表达式{

    case表达式1,表达式2, ... :

           语句块1

    case表达式3,表达式4, ... :

           语句块2

    //这里可以有多个case语句

    default:

           语句块

    }

    执行流程

    image.gif

     


    select语句

    select语句是和Go的管道channel有关,类似于通信型的switch语句

    语法如下:

    select {
        case communication clause  :
           statement(s);      
        case communication clause  :
           statement(s);
        /* 你可以定义任意数量的 case */
        default : /* 可选 */
           statement(s);
    }

    image.gif

      • 每个 case 都必须是一个通信
      • 所有 channel 表达式都会被求值
      • 所有被发送的表达式都会被求值
      • 如果任意某个通信可以进行,它就执行,其他被忽略。
      • 如果有多个 case 都可以运行,Select 会随机公平地选出一个执行。其他不会执行。 否则:
        1. 如果有 default 子句,则执行该语句。
        2. 如果没有 default 子句,select 将阻塞,直到某个通信可以运行;Go 不会重新对 channel 或值进行求值。
          目录
          相关文章
          |
          19天前
          |
          存储 Go 索引
          go语言中数组和切片
          go语言中数组和切片
          31 7
          |
          19天前
          |
          Go 开发工具
          百炼-千问模型通过openai接口构建assistant 等 go语言
          由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
          |
          19天前
          |
          程序员 Go
          go语言中结构体(Struct)
          go语言中结构体(Struct)
          93 71
          |
          18天前
          |
          存储 Go 索引
          go语言中的数组(Array)
          go语言中的数组(Array)
          100 67
          |
          21天前
          |
          Go 索引
          go语言for遍历数组或切片
          go语言for遍历数组或切片
          91 62
          |
          23天前
          |
          并行计算 安全 Go
          Go语言中的并发编程:掌握goroutines和channels####
          本文深入探讨了Go语言中并发编程的核心概念——goroutine和channel。不同于传统的线程模型,Go通过轻量级的goroutine和通信机制channel,实现了高效的并发处理。我们将从基础概念开始,逐步深入到实际应用案例,揭示如何在Go语言中优雅地实现并发控制和数据同步。 ####
          |
          19天前
          |
          存储 Go
          go语言中映射
          go语言中映射
          32 11
          |
          21天前
          |
          Go
          go语言for遍历映射(map)
          go语言for遍历映射(map)
          31 12
          |
          20天前
          |
          Go 索引
          go语言使用索引遍历
          go语言使用索引遍历
          28 9
          |
          24天前
          |
          安全 Serverless Go
          Go语言中的并发编程:深入理解与实践####
          本文旨在为读者提供一个关于Go语言并发编程的全面指南。我们将从并发的基本概念讲起,逐步深入到Go语言特有的goroutine和channel机制,探讨它们如何简化多线程编程的复杂性。通过实例演示和代码分析,本文将揭示Go语言在处理并发任务时的优势,以及如何在实际项目中高效利用这些特性来提升性能和响应速度。无论你是Go语言的初学者还是有一定经验的开发者,本文都将为你提供有价值的见解和实用的技巧。 ####