Adminxe's Blog | 低调求发展 - 潜心习安全 ,技术永无止境 | 谢谢您对本站的支持,有什么问题或者建议请及时联系:点击这里给我发消息

GO语言学习–流程控制

安全开发 MoCo, MoCo 149℃ 0评论

If

if条件判断

 package main

     import "fmt"

     //if条件判断
     func main() {
         age := 19
         if age > 18 {
             fmt.Println("已成年")
         } else {
             fmt.Println("未成年")
         }

多个判断条件

 package main

     import "fmt"

     //if条件判断
     func main() {
         age := 19

         //多个判断条件
         if age > 35 {
             fmt.Println("人到中年")
         } else if age > 18 {
             fmt.Println("青年")
         } else {
             fmt.Println("好好学习吧!")
         }
     }

作用域

 package main

     import "fmt"

     //if条件判断
     func main() {

         //作用域
         //age变量此时只在if条件判断语句中生效
         if age := 19; age > 18 {
             fmt.Println("成年")
         } else {
             fmt.Println("未成年")
         }
         //fmt.Println(age) 在这里是找不到age的
     }

For

基本格式

true时循环体不停地进行循环, false时自动退出循环。

基本格式:

for 初始语句;条件表达式;结束语句{
    循环体语句
}
 package main

     import "fmt"

     //for循环
     func main() {
         //基本格式
         for i := 0; i < 10; i++ {
             fmt.Println(i)

         }
     }

变形1

for循环的初始语句可以被忽略,但是初始语句后的分号必须要写

 package main

     import "fmt"

     //for循环
     func main() {
    
         //变种1
         var i = 5
         for ; i < 10; i++ {
             fmt.Println(i)
         }

     }

变形2

for循环的初始语句和结束语句都可以省略

  package main

     import "fmt"

     //for循环
     func main() {
    
         //变种2
         var i = 5
         for i < 10 {
             fmt.Println(i)
             i++
         }
    
     }

死循环

一直会循环下去,建议尝试运行一下。

 package main

     import "fmt"

     //for循环
     func main() {
    
         //死循环
         for {
             fmt.Println("123")
         }
   
     }

for range(键值循环)

可遍历数组、切片、字符串、map及通道(channel)

返回的是1、数组、切片、字符串返回索引和值

              2、map返回的是键和值

              3、通道(channel)只返回通道内的值

 package main

     import "fmt"

     //for循环
     func main() {
    
         //for range循环
         s := "hello  你好 "
         for i, v := range s {
             fmt.Printf("%d %c\n", i, v)
         }

     }

Break

跳出循环

 package main

     import "fmt"

     func main() {
         //跳出for循环
         //当i=5时就跳出for循环
         for i := 0; i < 5; i++ {
             if i == 5 {
                 break //跳出for循环
             }
             fmt.Println(i)

         }
         fmt.Println("over!!!")
     }

Continue

跳过此次循环,继续下次循环

 package main

     import "fmt"

     func main() {
         //当i=3时,跳过此次for循环(不执行for循环内部的打印语句)
         for i := 0; i < 6; i++ {
             if i == 3 {
                 continue
             }
             fmt.Println(i)
         }
         fmt.Println("over!!!")
     }

Switch

基本格式

当遇到大量的判断时,使用switch简化大量的判断

 package main

     import "fmt"

     //switch
     //简化大量的判断(一个变量和具体的值比较)
     func main() {
         n := 3
         switch n {
         case 1:
             fmt.Println("大拇指")
         case 2:
             fmt.Println("食指")
         case 3:
             fmt.Println("中指")
         case 4:
             fmt.Println("无名指")
         case 5:
             fmt.Println("小拇指")
         default:
             fmt.Println("无效数字")

         }

     }

一个分值多值

 package main

     import "fmt"

     //switch
     //简化大量的判断(一个变量和具体的值比较)
     func main() {
   
         //一个分值多个值,多个case值之间用英文逗号分隔
         switch n := 7; n {
         case 1, 3, 5, 7, 9:
             fmt.Println("奇数")
         case 2, 4, 6, 8:
             fmt.Println("偶数")
         default:
             fmt.Println(n)
         }

     }

分支值为表达式

分支使用表达式时switch语句后面不需要再跟判断变量

 package main

     import "fmt"

     //switch
     //简化大量的判断(一个变量和具体的值比较)
     func main() {
    
         //表达式
         age := 30
         switch { //分支使用表达式时switch语句后面不需要再跟判断变量
         case age < 25:
             fmt.Println("好好学习吧")
         case age > 25 && age < 35:
             fmt.Println("好好工作吧")
         case age > 60:
             fmt.Println("好好享受生活吧")
         default:
             fmt.Println("活着!!!")

         }

     }

Fallthrough

兼容C语言中的case

 package main

     import "fmt"

     //switch
     //简化大量的判断(一个变量和具体的值比较)
     func main() {
    
         s := "a"
         switch {
         case s == "a":
             fmt.Println("a")
             fallthrough //遇到fallthrough 回往下穿透一次
         case s == "b":
             fmt.Println("b")
         case s == "c":
             fmt.Println("c")
         default:
             fmt.Println("...")
         }

     }

Goto

跳出多层循环

 package main

     import "fmt"

     func main() {
         var flag = false
         for i := 0; i < 10; i++ {
             for j := 'A'; j < 'z'; j++ {
                 if j == 'C' {
                     flag = true
                     break //跳出内层for循环
                 }
                 fmt.Printf("%v-%c\n", i, j)

             }
             if flag {
                 break // 跳出for循环(外层的for循环)
             }

         }
     }

Goto+label

Goto+label实现跳出多层for循环

 package main

     import "fmt"

     func main() {
    
         //Goto+label实现跳出多层for循环
         for i := 0; i < 10; i++ {
             for j := 'A'; j < 'z'; j++ {
                 if j == 'c' {
                     goto xx //跳转到指定的那个标签
                 }
             }

         }
     xx: // label标签
         fmt.Println("over!!!")
     }

参考链接

https://www.liwenzhou.com/posts/Go/04_basic/

转载请注明:Adminxe's Blog » GO语言学习–流程控制

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址