zoukankan      html  css  js  c++  java
  • Golang流程控制语

    前言

    流程控制顾名思义就是  控制程序执行流程的语句 for循环、if else判断 

    一、if分支

    package main
    
    import (
    	"fmt"
    )
    
    //if 条件判断
    func main() {
    	age := 19
    	//if else 两个判断分支
    	if age > 18 {
    		fmt.Println("澳门首家线上赌场开业啦")
    	} else {
    		fmt.Println("该写暑假作业了")
    	}
    	//多个判断分支
    	if age > 35 {
    		fmt.Println("人到中年")
    	} else if age > 18 || age < 100 {
    		fmt.Println("青年")
    	} else {
    		fmt.Println("好好学习")
    	}
    	//多个判断条件
    	var name = "张根"
    	if name == "张根" && age == 19 {
    		fmt.Println("你永远18岁")
    	}
    
    	//for循环
    	for i := 0; i < 10; i++ {
    		fmt.Println(i)
    	}
    
    }
    

    if 条件循环语句 声明变量

    Go的if条件分支里也可以声明变量,但是该变量只能在 if分支的作用域使用,这样也起到了节省内存的作用。

    package main
    
    import (
    	"fmt"
    )
    
    //if 条件判断开辟作用域
    func main() {
    	if age := 19; age > 18 {
    		fmt.Println("已经成年")
    	}
    	fmt.Println(age) //这里无法引用到age变量因为在if中声明的变量只能在if分支的作用域使用
    
    }
    

      

    switch语句  

    使用switch语句简化 多个if条件判断

    package main
    
    import (
    	"fmt"
    )
    
    //switch:简化大量的if分支
    func main() {
    	var n = 1
    	if n == 1 {
    		fmt.Println("大拇指")
    	} else if n == 2 {
    		fmt.Println("食指")
    	} else if n == 3 {
    		fmt.Println("中指")
    	} else if n == 4 {
    		fmt.Println("无名指")
    	} else if n == 5 {
    		fmt.Println("小拇指")
    	} else {
    		fmt.Println("无效的输入")
    	}
    
    	//使用 switch简化以上代码
    	switch n = 3; n {
    	case 1:
    		fmt.Println("小拇指")
    	case 2:
    		fmt.Println("无名指")
    	case 3:
    		fmt.Println("中指")
    	case 4:
    		fmt.Println("事指")
    	case 5:
    		fmt.Println("大拇指")
    
    	default: //默认分支
    		fmt.Println("无效的输入")
    	}
    
    	//switch 中判断 奇数 偶数
    	switch n := 8; n {
    	case 1, 3, 5, 7, 9:
    		fmt.Println("奇数")
    	case 2, 4, 6, 8, 10:
    		fmt.Println("偶数")
    	default:
    		fmt.Println("无效的数字")
    	}
    
    	//case 分支使用表示式
    	age := 19
    	switch {
    	case age < 25:
    		fmt.Println("好好学习")
    	case age > 25 && age < 35:
    		fmt.Println("好好工作吧")
    	case age > 35 && age < 60:
    		fmt.Println("好好享受生活把")
    	default:
    		fmt.Println("好好活着")
    
    	}
    
    	//fall through 下沉,语法执行满足1个case条件之后,再下沉1个case去判断(previouscase || next case)
    	s := "a"
    	switch {
    	case s == "a":
    		fmt.Println("a")
    		fallthrough
    	case s == "b":
    		fmt.Println("b")
    	}
    
    	//既打印a 也打印 b
    
    }
    

      

     

    二、for循环

    for循环基本格式

    设置i的初始值为0,当i小于10时,每次循环i+1
    package main
    
    import (
    	"fmt"
    )
    
    //for循环
    func main() {
    	//基本格式
    	//i的初始值为0,当i小于10时,每次循环i+1
    	for i := 0; i < 10; i++ {
    		fmt.Println(i)
    	}
    
    }
    

    变种

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	//变种1
    	var i = 5
    	for ; i < 10; i++ {
    		fmt.Println(i)
    	}
    	//变种2
    	for i := 7; i < 10; i++ {
    		fmt.Println(i)
    	}
    	//变种3
    	var j = 9
    	for j < 10 {
    		fmt.Println(i)
    		j++
    	}
    }
    

    for rang键值对循环

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    
    	//键值对循环 for range
    	var str1 = "张根"
    	for i, v := range str1 {
    		fmt.Printf("索引:%d 值:%c
    ", i, v)
    
    	}
    
    }
    

    break 和 continue

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	//当i=5时跳出for循环
    	for i := 0; i < 10; i++ {
    		if i == 5 {
    			break //break跳出for循环
    		}
    		fmt.Println(i)
    	}
    	//当i=5是忽略本次循环
    	for i := 0; i < 9; i++ {
    		if i == 5 {
    			continue
    		}
    		fmt.Println(i)
    
    	}
    }
    

    break and continue代码跳转

    package main
    
    import (
    	"fmt"
    )
    
    func ContinueDemo() {
    forloop1:
    	for i := 0; i < 5; i++ {
    		// forloop2:
    		for j := 0; j < 5; j++ {
    			if i == 2 && j == 2 {
    				continue forloop1
    			}
    			fmt.Printf("%v-%v
    ", i, j)
    		}
    	}
    }
    
    func BreakDemo() {
    break1:
    	for i := 0; i < 10; i++ {
    		for j := 0; j < 10; j++ {
    			if j == 2 {
    				break break1
    			}
    			fmt.Printf("%v-%v
    ", i, j)
    		}
    	}
    	fmt.Println("结束")
    }
    
    func main() {
    	BreakDemo()
    	ContinueDemo()
    }
    

      

      

    Go打印乘法表

    package main
    
    import (
    	"fmt"
    )
    
    //打印乘法表
    func main() {
    	for i := 1; i < 10; i++ {
    		for j := 1; j < i; j++ {
    			fmt.Printf("%d*%d=%d	", j, i, j*i)
    		}
    		fmt.Println()
    	}
    
    }
    

    Goto 跳出多层for循环

    package main
    
    import (
    	"fmt"
    )
    
    //跳出多层for循环
    func main() {
    	//设置标志位
    	var flag = false
    	for i := 0; i < 10; i++ {
    		for j := 'A'; j < 'Z'; j++ {
    			if j == 'C' {
    				flag = true
    				break //跳出内层循环
    			}
    			fmt.Printf("%v-%c
    ", i, j)
    
    		}
    		if flag {
    			break //跳出外层循环
    		}
    
    	}
    
    	//使用go to语句跳出多层for循环
    	for i1 := 0; i1 < 10; i1++ {
    		for j1 := 'a'; j1 < 'z'; j1++ {
    			if j1 == 'c' {
    				goto lable1 //goto 直接跳到定义lable1的位置执行
    			}
    			fmt.Printf("%v-%c
    ", i1, j1)
    
    		}
    
    	}
    lable1: //定义1个 lable
    	fmt.Println("结束了")
    
    }
    

      

    参考

  • 相关阅读:
    我编写的一个显示菱形的C程序
    关于一个分离1~32767之间整数的一个C程序的研究
    COM Event to HTML at IE
    Dynamic Create COM Attribute
    最常用的图像处理优化
    【转】为什么会出现LNK2005"符号已定义"的链接错误?
    一道判断的面试题
    Google放出C++代码风格规范
    inno setup读取XML文件
    Ulipad框架分析(一)
  • 原文地址:https://www.cnblogs.com/sss4/p/12536755.html
Copyright © 2011-2022 走看看