0X03 Go语言 条件、循环语句。

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句.

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

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

if 语句嵌套 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句

switch 语句用于基于不同条件执行不同动作。

select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。

实例

if..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);

 }
0X03 Go语言 条件、循环语句。_第1张图片
image.png

if 嵌套:

Go 编程语言中 if嵌套语句的语法如下:

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

实例:

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 );
}
0X03 Go语言 条件、循环语句。_第2张图片
image.png

switch

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。
语法
Go 编程语言中 switch 语句的语法如下:

switch var1 {
   case val1:
    ...
   case val2:
    ...
   default:
    ...

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

实例:

package main

import "fmt"

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

   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 );      
}
0X03 Go语言 条件、循环语句。_第3张图片
image.png

Type Switch

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

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

实例

package main

import  "fmt"


type Bag struct {
    Key string
}

type Bag2 struct {
    Key int
}

func main() {
    var b1 interface{}
    var b2 interface{}

    b1 = Bag{Key: "1"}
    b2 = Bag2{Key: 0}
    //获取interface{}中存放的数据类型
    //方法一:
    { //判断是否是Bag类型  若不是则置0
        b, ok := b1.(Bag)
        fmt.Println("Bag类型   :", ok, "数据", b)
    }
    { //判断是否是Bag2类型  若不是则置0
        b, ok := b2.(Bag2)
        fmt.Println("Bag2类型:", ok, "数据", b)
    }
//方法二:
    switch v := b1.(type) { //v表示b1 接口转换成Bag对象的值
        case Bag:
        fmt.Println("b1.(type):", "Bag", v)
        case Bag2:
        fmt.Println("b1.(type):", "Bag2", v)
        default:
        fmt.Println("b1.(type):", "other", v)
    }

}
0X03 Go语言 条件、循环语句。_第4张图片
image.png

注:
断言:一般使用于已知interface中的对象的数据类型,调用后自动将接口转换成相应的对象,语法结构 接口对象(obj),存放的数据类型(string) ,v,ok := obj.(string),若是相应的对象ok则为真,v为相应对象及数据。
nil表示无值,任何变量在没有被赋值之前的值都为nil,对于真假判断,只有nil与false表示假,

循环语句

for循环,循环控制语句:
break 语句 经常用于中断当前 for 循环或跳出 switch 语句
continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环
goto 语句将控制转移到被标记的语句。

实例:

package main

import "fmt"

func main() {
    for true  {
        fmt.Printf("这是无限循环。\n");
    }
}

输出 1-100 素数:

package main

import "fmt"

func main() {

  var C, c int//声明变量

    C=1 /*这里不写入FOR循环是因为For语句执行之初会将C的值变为1,当我们goto A时for语句会重新执行(不是重新一轮循环)*/

   A: for C < 100 {
       C++ //C=1不能写入for这里就不能写入
           for c=2; c < C ; c++ {
               if C%c==0 {
                   goto A //若发现因子则不是素数
               }
          }
          fmt.Println(C,"是素数")
   }
}
0X03 Go语言 条件、循环语句。_第5张图片
image.png

你可能感兴趣的:(0X03 Go语言 条件、循环语句。)