美文网首页
go学习三·分支语句

go学习三·分支语句

作者: 那钱有着落吗 | 来源:发表于2021-03-08 10:39 被阅读0次

在go中的 if,switch,for在与其他语言基本一致情况下多了一些功能

2.2 if 变体

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

if statement; condition {  
}

if condition{
    
    
}
示例代码:

package main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.Println(num,"is even") 
    }  else {
        fmt.Println(num,"is odd")
    }
}
需要注意的是,num的定义在if里,那么只能够在该if..else语句块中使用,否则编译器会报错的。

2.switch

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。 您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}
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"  //case 后可以由多个数值
      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 );      
}

如需贯通后续的case,就添加fallthrough

package main

import (
    "fmt"
)

type data [2]int

func main() {
    switch x := 5; x {
    default:
        fmt.Println(x)
    case 5:
        x += 10
        fmt.Println(x)
        fallthrough
    case 6:
        x += 20
        fmt.Println(x)
    }
}

运行结果:

15
35

case中的表达式是可选的,可以省略。如果该表达式被省略,则被认为是switch true,并且每个case表达式都被计算为true,并执行相应的代码块。

示例代码:

package main

import (  
    "fmt"
)

func main() {  
    num := 75
    switch { // expression is omitted
    case num >= 0 && num <= 50:
        fmt.Println("num is greater than 0 and less than 50")
    case num >= 51 && num <= 100:
        fmt.Println("num is greater than 51 and less than 100")
    case num >= 101:
        fmt.Println("num is greater than 100")
    }

}

switch的注意事项
case后的常量值不能重复
case后可以有多个常量值
fallthrough应该是某个case的最后一行。如果它出现在中间的某个地方,编译器就会抛出错误。

3.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学习三·分支语句

    在go中的 if,switch,for在与其他语言基本一致情况下多了一些功能 2.2 if 变体 2.switch...

  • python学习笔记03-三大结构

    03 三大结构 - 顺序 - 分支 - 循环 分支语句 单路分支 if 条件表达式: 语句1 语句2 ...

  • Python 学习之路-03 分支循环

    三大结构 顺序 分支 循环 分支 单向分支 分支的基本语法if 条件表达式:语句1语句2语句3........ 条...

  • 六 if判断语句

    if语句为判断语句。注意缩进格式 一、单分支 二、双分支 三、多分支

  • 编写Shell脚本---流程控制语句

    [TOC] 流程控制语句 1 if条件测试语句 if语句分为三种结构: 单分支结构 双分支结构 多分支结构 1.1...

  • 逻辑分支

    一.分支的介绍 分支即if/swift/三目原酸符等判断语句 通过分支语句可以控制程序的执行流程 二.if分支语句...

  • Day-3

    三大结构 顺序 分支 循环 分支 分支的基本语法if 条件表达式:语句1语句2语句3...... 条件表达式就是计...

  • 6 Go外壳:分支与循环

    一、分支结构 1.if语句 go的if语句有如下特征: 条件表达式必须结果为布尔类型 声明语句/条件表达式不带小括...

  • Swift 逻辑分支 if / switch

    逻辑分支的分类 if语句 switch语句 三目运算符 (相当于 If else) if分支语句 注意:在swi...

  • Clojure 学习笔记 :9 条件分支结构

    Clojure 零基础 学习笔记 条件语句 分支控制 顺序结构、循环结构、分支结构 --- 程序的三大结构 条件控...

网友评论

      本文标题:go学习三·分支语句

      本文链接:https://www.haomeiwen.com/subject/maghqltx.html