Go:条件控制语句

这篇具有很好参考价值的文章主要介绍了Go:条件控制语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Go 语言中,主要的条件控制语句有 if-elseswitchselect。以下是对它们的简单介绍:

1. if 语句:

if 语句用于根据条件执行不同的代码块。它的基本形式如下:

if condition {
    // code block
} else if condition2 {
    // code block 2
} else {
    // default code block
}
  • condition 是一个布尔表达式,如果为真,将执行与 if 关联的代码块。
  • 可以有零个或多个 else if 部分,每个 else if 部分都有一个条件,如果前面的条件为假且当前条件为真,则执行相应的代码块。
  • 可以有一个可选的 else 部分,用于处理所有条件均为假的情况。
// 示例
num := 42

if num > 50 {
    fmt.Println("Number is greater than 50")
} else if num < 0 {
    fmt.Println("Number is negative")
} else {
    fmt.Println("Number is between 0 and 50 (inclusive)")
}

2. switch 语句:

switch 语句用于根据一个表达式的值选择不同的执行路径。它的基本形式如下:

switch expression {
case value1:
    // code block 1
case value2:
    // code block 2
default:
    // default code block
}
  • expression 是一个表达式,其值会与各个 case 的值进行比较。
  • 如果 expression 的值与某个 case 的值相匹配,将执行相应的代码块。
  • 可以有多个 case,每个 case 后面跟着一个值。
  • default 是一个可选部分,表示如果没有匹配的 case,则执行 default 后面的代码块。
// 示例
day := "Saturday"

switch day {
case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday":
    fmt.Println("It's a weekday.")
case "Saturday", "Sunday":
    fmt.Println("It's a weekend.")
default:
    fmt.Println("Invalid day.")
}

3. select 语句:

select 语句用于处理通道(channel)操作,它类似于 switch,但专门用于选择执行哪个通道操作。select 语句用于在多个通道操作中进行选择,如果有多个通道操作都可以执行,则随机选择一个执行。

select {
case msg1 := <-ch1:
    // code block 1
    fmt.Println("Received", msg1)
case msg2 := <-ch2:
    // code block 2
    fmt.Println("Received", msg2)
case ch3 <- "Hello":
    // code block 3
    fmt.Println("Sent Hello")
default:
    // default code block
    fmt.Println("No communication")
}

select 语句中,只有一个 case 会被执行,选择规则是随机的。如果没有可执行的 case,则执行 default

4. 对比 if-else 和 switch

if-elseswitch 是用于控制流的两个主要语句。它们都用于根据条件执行不同的代码块,但在某些情况下,switch 语句可能更适合一些特定的场景。下面是对比它们的一些方面:

4.1 可读性和简洁性

  • if-else 适用于简单的条件判断,易于理解和编写。当只有少数几个条件时,if-else 可能更直观。

    if condition1 {
        // code block 1
    } else if condition2 {
        // code block 2
    } else {
        // default code block
    }
    
  • switch 适用于多个条件的情况,尤其是当条件是固定的值时。switch 语句可以更加清晰地表达多个相等条件的情况。

    switch value {
    case condition1:
        // code block 1
    case condition2:
        // code block 2
    default:
        // default code block
    }
    

4.2 条件匹配

  • if-else 使用 if 语句可以使用任意的条件表达式,包括比较运算符、逻辑运算符等。

    if x > 0 && x < 10 {
        // code block
    } else {
        // default code block
    }
    
  • switch switch 语句可以用于比较固定值,不仅仅是等于条件,还可以是其他比较操作符。

    switch x {
    case 1:
        // code block 1
    case 2, 3:
        // code block 2
    default:
        // default code block
    }
    

4.3 类型匹配

  • if-else 可以通过类型断言来进行类型匹配。

    if value, ok := x.(int); ok {
        // code block
    } else {
        // default code block
    }
    
  • switch switch 语句可以直接匹配接口值的类型。

    switch x.(type) {
    case int:
        // code block 1
    case string:
        // code block 2
    default:
        // default code block
    }
    

4.4 Fallthrough

  • if-else 不支持 fallthrough

  • switch switch 语句可以使用 fallthrough 来继续执行下一个 case

    switch x {
    case 1:
        // code block 1
        fallthrough
    case 2:
        // code block 2
    default:
        // default code block
    }
    

4.5 比较多个值

  • if-else 需要使用多个 if 语句来比较多个值。

    if x == 1 {
        // code block 1
    } else if x == 2 {
        // code block 2
    } else {
        // default code block
    }
    
  • switch switch 语句可以一次性比较多个值。

    switch x {
    case 1, 2:
        // code block
    default:
        // default code block
    }
    

扩展:fallthrough

fallthrough 是 Go 语言中的一个特殊关键字,用于在 switch 语句中强制执行下一个 case 的代码块,而不进行条件判断。在正常情况下,switch 语句在匹配到一个 case 后会退出整个 switch 语句,但使用 fallthrough 关键字可以改变这一行为。

以下是一个使用 fallthrough 的简单示例:

package main

import "fmt"

func main() {
    switch num := 2; num {
    case 1:
        fmt.Println("This is case 1.")
        fallthrough
    case 2:
        fmt.Println("This is case 2.")
        fallthrough
    case 3:
        fmt.Println("This is case 3.")
    }
}

在这个示例中,fallthrough 关键字被用于在匹配到 case 1case 2 后继续执行 case 3 的代码块,即使 case 2 的条件也匹配。

需要注意的是,fallthrough 会导致下一个 case 的代码块无条件执行,而不进行后续的条件判断。这在某些情况下可能会带来意外的结果,因此在使用 fallthrough 时需要谨慎。一般而言,fallthrough 的使用场景相对较少,通常在需要某种特定的逻辑流程时才会使用。

在实际编程中,大多数情况下,fallthrough 并不是必须的,而是通过 case 条件来控制流程更加清晰和容易理解。


Go:条件控制语句

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特文章来源地址https://www.toymoban.com/news/detail-748861.html


到了这里,关于Go:条件控制语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索Python条件语句的奇妙世界:解密逻辑与控制流

    Python的条件语句用来根据特定的条件决定程序的执行流程。它允许程序根据条件的真假执行不同的代码块,从而实现不同情况下的不同操作。条件语句使程序能够根据特定条件进行逻辑判断和选择性的控制,从而增强了程序的灵活性和可扩展性。那么今天将由我来带大家进入

    2024年02月12日
    浏览(75)
  • Python条件控制和循环语句(if while for )

    同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。 while+else whlie+break break跳出本层循环的含义 标志位的使用 while+continue 死循环: 程序中坚决不能出现死循环 for循环不会出现死循环,它的循环条件不是我们来控制,是人家内部已经控制好了 for循环和while循环都是

    2024年02月11日
    浏览(48)
  • C++ 条件与 If 语句:掌握逻辑判断与流程控制精髓

    您已经知道 C++ 支持数学中的常见逻辑条件: 小于: a b 小于或等于: a = b 大于: a b 大于或等于: a = b 等于: a == b 不等于: a != b 您可以使用这些条件来针对不同的决定执行不同的操作。 C++ 具有以下条件语句: 使用 if 来指定一个代码块,如果指定的条件为 true,则执行该

    2024年04月08日
    浏览(53)
  • Go语言中的流程控制语句

    目录 流程控制语句 if语句 if···else语句 switch语句 for循环 break语句 continue语句 goto语句 在Go语言中,可以在if后面加上一段执行语句,执行语句也可以用作对if条件的判断。它的语法格式为: a赋值为condition()方法的结果,然后让a与nil进行判断,如果为true,那么会执行代码块中

    2024年02月03日
    浏览(40)
  • 3.你所不知道的go语言控制语句——Leetcode习题69

    目录 本篇前瞻 Leetcode习题9 题目描述 代码编写 控制结构 顺序结构(Sequence) 声明和赋值 多返回值赋值 运算符 算术运算符 位运算符 逻辑运算 分支结构 if 语句 switch 语句 逻辑表达式 fallthrough 类型推断 循环语句 continue break goto Leetcode习题69 题目描述 题目分析 代码编写 本篇

    2024年02月12日
    浏览(53)
  • Go语言入门记录:从基础到变量、函数、控制语句、包引用、interface、panic、go协程、Channel、sync下的waitGroup和Once等

    程序入口文件的包名必须是main,但主程序文件所在文件夹名称不必须是 main ,即我们下图 hello_world.go 在 main 中,所以感觉 package main 写顺理成章,但是如果我们把 main 目录名称改成随便的名字如 filename 也是可以运行的,所以迷思就在于写在文件开头的那个 package main 和 java

    2024年02月11日
    浏览(36)
  • Verilog中的 条件语句\多路分支语句\循环语句

    一、背景 由于初学Verilog,故写篇笔记记录Verilog中的 if-else 、 case-endcase 、 for 、 while 、 repeat 、 forever 语法,以及例子。 二、if-else 定个标准,每个 if-else 的出现都要有 begin-end 语句。 2.1 标准结构 条件语句标准使用结构: 2.2 例子 二输入选择器: 三、case-endcase case 语句是一

    2024年02月11日
    浏览(48)
  • js前端条件语句优化

    在实际开发中,由于应用需求可能存在多种情况场景,那处理时就需要列举所有对应的情况去处理,常见的处理可能会用到if…else去处理。但是如果条件判断太多,就会导致代码过于冗余难以维护,因此我们可以使用其他的方式去优化、较少代码冗余量。 使用 1.1 多个判断用

    2024年02月07日
    浏览(55)
  • 【Shell编程之条件语句】

    测试表达式是否成立,若成立返回0,否则返回其他数值 2.1、常用的测试操作符 命令 解释 -d 测试是否为目录(Directory) -e 测试目录或文件是否存在(Exist) -f 测试是否为文件(File) -r 测试当前用户是否有权限读取 (Read) -w 测试当前用户是否有权限写入 (Write) -x 测试当前用户是否有权

    2023年04月27日
    浏览(33)
  • Shell编程之条件语句

    在简单的Shell脚本程序中,各语句将 按先后顺序依次执行 ,从而实现批处理的自动化过程。然而,单一的顺序结构使得脚本过于机械化,不够智能,难以处理更加灵活的系统任务。 本章主要讲了 条件测试,包括文件测试、整数值比较、字符串比较和逻辑测试 。以及如何使用

    2024年02月01日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包