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 或值进行求值。
          目录
          相关文章
          |
          2月前
          |
          存储 监控 算法
          员工上网行为监控中的Go语言算法:布隆过滤器的应用
          在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
          85 8
          员工上网行为监控中的Go语言算法:布隆过滤器的应用
          |
          2月前
          |
          存储 Go 索引
          go语言中数组和切片
          go语言中数组和切片
          47 7
          |
          2月前
          |
          Go 开发工具
          百炼-千问模型通过openai接口构建assistant 等 go语言
          由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
          |
          2月前
          |
          程序员 Go
          go语言中结构体(Struct)
          go语言中结构体(Struct)
          116 71
          |
          2月前
          |
          存储 Go 索引
          go语言中的数组(Array)
          go语言中的数组(Array)
          117 67
          |
          9天前
          |
          存储 监控 算法
          内网监控系统之 Go 语言布隆过滤器算法深度剖析
          在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
          22 5
          |
          2月前
          |
          Go 索引
          go语言for遍历数组或切片
          go语言for遍历数组或切片
          119 62
          |
          18天前
          |
          算法 安全 Go
          Go语言中的加密和解密是如何实现的?
          Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
          38 14
          |
          18天前
          |
          Go 数据库
          Go语言中的包(package)是如何组织的?
          在Go语言中,包是代码组织和管理的基本单元,用于集合相关函数、类型和变量,便于复用和维护。包通过目录结构、文件命名、初始化函数(`init`)及导出规则来管理命名空间和依赖关系。合理的包组织能提高代码的可读性、可维护性和可复用性,减少耦合度。例如,`stringutils`包提供字符串处理函数,主程序导入使用这些函数,使代码结构清晰易懂。
          63 11
          |
          18天前
          |
          存储 安全 Go
          Go语言中的map数据结构是如何实现的?
          Go 语言中的 `map` 是基于哈希表实现的键值对数据结构,支持快速查找、插入和删除操作。其原理涉及哈希函数、桶(Bucket)、动态扩容和哈希冲突处理等关键机制,平均时间复杂度为 O(1)。为了确保线程安全,Go 提供了 `sync.Map` 类型,通过分段锁实现并发访问的安全性。示例代码展示了如何使用自定义结构体和切片模拟 `map` 功能,以及如何使用 `sync.Map` 进行线程安全的操作。