Go语言【第五篇】:Go条件语句

Go语言条件

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为true来决定是否执行指定语句,并在条件为false的情况再执行另外的语句。下图展示了程序语言中条件语句的结构:

Go语言提供了以下几种条件判断语句:

语句 描述
if语句 if语句由一个布尔表达式后紧跟一个或多个语句组成
if...else语句 if语句后可以使用可选的else语句,else语句中的表达式在布尔表达式为false时执行
if嵌套语句 可以在ifelse if语句中嵌入一个或多个ifelse if语句
switch语句 switch语句用于基于不同条件执行不同动作
select语句 select语句类似于switch语句,但是select会随机执行一个可运行的case,如果没有case可以运行,它将阻塞,直到有case可运行

Go语言if语句

if语句由布尔表达式后紧跟一个或多个语句组成,其语法如下:

if 布尔表达式 {
    /* 在布尔表达式为 true时执行 */
}

if在布尔表达式为true时,其后紧跟的语句块执行,如果为false则不执行。流程如如下:

实例代码:

package main

import "fmt"

func main()  {
    /* 定义局部变量 */
    var a int = 10
    /* 使用if语句判断布尔表达式 */
    if a < 20 {
        /* 如果条件为true则执行以下语句 */
        fmt.Printf("a 小于 20\n")
    }
    fmt.Printf("a 的值为:%d\n", a)
}

以上代码执行结果为:

a 小于 20
a 的值为:10

Go语言if...else语句

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

if 布尔表达式{
    /* 在布尔表达式为true时执行 */
}else {
    /* 在布尔表达式为false时执行 */
}

if在布尔表达式为true时,其后紧跟的语句块执行,如果为false则执行else语句块,流程图如下:

实例代码:

package main

import "fmt"

func main()  {
    /* 定义局部变量 */
    var a int = 100

    /* 判断布尔表达式 */
    if a < 20 {
        /* 如果条件为true则执行以下语句 */
        fmt.Printf("a 小于 20\n")
    }else {
        /* 如果条件为false则执行以下语句 */
        fmt.Printf("a 不小于 20\n")
    }
    fmt.Printf("a 的值为:%d\n", a)
}

以上实例运行结果:

a 不小于 20
a 的值为:100

Go语言if嵌套

可以在if或者else if语句中嵌套一个或者多个if或else if语句,其语法如下:

if 布尔表达式 1 {
    /* 在布尔表达式 1 为true时执行 */
    if 布尔表达式 2 {
    /* 在布尔表达式 2 为true时执行 */
    }
}

可以使用同样的方式在if语句中嵌套else if ... else语句

实例代码:

package main

import "fmt"

func main()  {
    /* 定义局部变量 */
    var a int = 100
    var b int = 200

    /* 判断条件 */
    if a == 100 {
        /* if 条件语句为 true 执行 */
        if b == 200 {
            /* if 条件语句为 true 执行 */
            fmt.Printf("a 的值为100, b 的值为200\n")
        }
    }
    fmt.Printf("a 值为:%d\n", a)
    fmt.Printf("b 值为:%d\n", b)
}

以上代码运行结果:

a 的值为100, b 的值为200
a 值为:100
b 值为:200

Go语言switch语句

switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止;switch语句执行的过程从上至下,直到找到匹配项,匹配项后面不需要添加break,其语法如下:

switch varl {
    case varl1:
        ...
    case val2:
        ...
    default:
        ...
}

变量varl可以是任何类型,而varl1和varl2则可以是同类型的任意值。类型不被局限于常量或整数,但必须时相同的类型,或者最终结果为相同类型的表达式。其流程如如下:

实例代码:

package main

import "fmt"

func main()  {
    /* 定义局部变量 */
    var grade string = "B"
    var marks int = 90

    switch marks {
    case 90: grade = "A"
    case 80: grade = "B"
    case 50,60,70: grade = "C"
    default: grade = "D"
    }

    switch  {
    case grade  == "A":
        fmt.Printf("优秀!\n")
    case grade == "B", grade == "C":
        fmt.Printf("良好!\n")
    case grade == "D":
        fmt.Printf("及格!\n")
    case grade == "F":
        fmt.Printf("不及格!\n")
    default:
        fmt.Printf("差!\n")
    }
    fmt.Printf("你的等级是 %s\n", grade)
}

以上代码执行结果为:

优秀!
你的等级是 A

type switch

switch语句还可以被用于type-switch来判断某个interface变量中实际存储的变量类型,其语法格式如下:

switch x.(type){
    case type:
        statement(s)
    case type:
        statement(s)
    /* 可以定义任意个数的case */
    default:    // 可选
        statement(s)
}

代码实例:

package main

import (
    "fmt"
)

func main() {
    var x interface{}

    switch i := x.(type){
    case nil:
        fmt.Printf("x 的类型:%T", i)
    case int:
        fmt.Printf("x 是 int 型")
    case float64:
        fmt.Printf("x 是 float64 型")
    case func(int) float64:
        fmt.Printf("x 是 func(int) 型")
    case bool, string:
        fmt.Printf("x 是 bool 或 string 型" )
    default:
        fmt.Printf("未知型")

    }
}

以上代码执行结果为:

x 的类型:<nil>

Go语言select语句

select是Go中的一个控制结构,类似于通信的switch语句,每个case必须是一个通信操作,要么是发送要么是接收。select随机执行一个可运行的case,如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的,其语法如下:

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

以下描述了select语句的语法:

  • 每个case都必须是一个通信
  • 所有channel表达式都会被求值
  • 所有被发送的表达式都会被求值
  • 如果任意某个通信可以进行,他就执行,其他被忽略
  • 如果有多个case都可以运行,select会随机公平地选出一个执行,其他不会执行

    否则:

    1.如果有default子句,则执行该局;

    2.如果没有default子句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值;

代码实例:

package main

import "fmt"

func main() {
   var c1, c2, c3 chan int
   var i1, i2 int
   select {
      case i1 = <-c1:
         fmt.Printf("received ", i1, " from c1\n")
      case c2 <- i2:
         fmt.Printf("sent ", i2, " to c2\n")
      case i3, ok := (<-c3):  // same as: i3, ok := <-c3
         if ok {
            fmt.Printf("received ", i3, " from c3\n")
         } else {
            fmt.Printf("c3 is closed\n")
         }
      default:
         fmt.Printf("no communication\n")
   }
}

以上代码执行结果:

no communication

原文地址:https://www.cnblogs.com/love9527/p/8671121.html

时间: 2024-11-09 03:44:11

Go语言【第五篇】:Go条件语句的相关文章

golang语言学习第三课 条件语句

if 是一个条件语句.if 语句的语法为: if condition { } 与其他语言不同, 其他语言 if后面有()括号,但是go语言是没有的. if 语句后面可以接可选的 else if 和 else 语句: if condition { } else if condition { } else { } 注意: 务必在 } 后半个花括号后面跟着 else关键词,如果换行跟着 else是错误的.无法通过编译. 如下代码是错误的,无法通过编译的: if condition { } else {

Java使用条件语句和循环结构确定控制流

与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流.本文将简单讲解条件.循环和switch. 一.块作用域 块(block),即复合语句.是指由一对大括号括起来的若干条简单的Java语句.块确定了变量的作用域. 比如: 1 public class Code { 2 static 3 { 4 System.out.println("1"); 5 } 6 { 7 System.out.println("2"); 8 } 9 public Code() 1

ASP基础教程:ASP脚本变量、函数、过程和条件语句

在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在 ASP 程序编写过程中的一系列实例使大家对 VBScript 有更进一层的理解. 大家在学习了脚本语言 VBScript 的变量.常量和过程的基本概念后,本期将继续向各位介绍 VBScript 的函数和语法. 函数和过程一样都是命名了的代码块,但它们却有很大的区别,过程完成程序任务,函数则返回值.我们可以这样理解,过程象

Python成长之路第一篇(4)_if,for,while条件语句

有了以上的基本基础,已经上面写的几个小练习,大家肯定有很多的不满,比如查询为什么查询一次就退出了呢?下面我们来学习条件语句 一.万恶的加号 以前我们在print的时候如果要加上变量都有是使用+来作为连接,但是这样做是不好的 因为在使用加号的时候,会在内存中开辟新的内存地址来存放新的内容这样做的坏处就是增加了内存的消耗 那么我们该怎么办呢? (1)字符串格式化 ①内置占位符 Python 支持格式化字符串的输出 .尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符

Swift学习笔记五:循环和条件语句

一.循环语句 1. for循环 1) for -in 循环,对于数据范围,序列,集合等中的每一个元素,都执行一次 for a in 0...5{}    //循环迭代,从a=0到a=5,执行{}里的代码 注意:a只循环中存在,也就是出了{}a就不存在了 或者遍历数组 let a = [1,2,3] for b in a{} //循环迭代,从b=1到b=3 如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身: for _ in 0...5{}    //循环执行{}里的代码,

小猪猪C++笔记基础篇(五)表达式、语句

小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还是有点点收获的东西.那么,我只就一些容易弄糊涂和忽略的地方提出来,为日后变成作参考. 一.表达式 (一)概念 表达式时由一个或者多个运算对象组成的,对一个表达式求值将得到一个结果.把一个运算发和一个或者多个运算对象组合起来可以生成较为复杂的表达式. 作用于一个对象的运算符是一元运算符例如:“&”,“

GO_04:GO语言基础条件语句

1. 判断语句if 1. 条件表达式没有括号(这点其他语言转过来的需要注意) 2. 支持一个初始化表达式(可以是并行方式,即:a, b, c := 1, 2, 3) 3. 左大括号必须和条件语句或 else 在同一行 4. 支持单行模式 5. 初始化语句中的变量为 block 级别,同时隐藏外部同名变量 有关 if 语句示例代码如下: package main import "fmt" func main() { a := true if a, b, c := 1, 2, 3; a +

【Go语言】【8】GO语言的条件语句和选择语句

一.条件语句 条件语句即if-else语句,通常用来判断条件是否满足,下面通过猜价格游戏来了解条件语句: 1.猜价格游戏 假如有一件商品价格为81元,在[0,100]范围之内 系统请猜测者输入一个价格 猜测者:50 系统提示:低了 猜测者:87 系统提示:高了 猜测者:83 系统提示:高了 猜测者:81 系统提示:恭喜您猜对了 最终效果如下图: 2.猜价格代码实现 package main import ( "fmt" "math/rand" "time&

子数涵数&#183;C语言——条件语句

首先,我们讲一下理论知识,在编程中有三种结构,分别是顺序结构.条件结构.循环结构,如果用流程图来表示的话就是: 那么在C语言中,如何灵活运用这三种结构呢?这就需要用到控制语句了. 而条件语句便是控制语句之一. C语言的条件语句一般来讲,有三个:if语句.if……else语句和switch语句 下面我们来分别介绍一下这三个语句 一.if语句 (用if语句实现上述的条件结构的一个分支) 二.if……else语句 (用if……else语句实现上述的条件结构) 三.switch语句 (现在用switch