Go流程控制语句

if判断

#单分支
package main
import "fmt"
func main()  {
	age := 19
	if age > 18 {
		fmt.Println("aaaaaa")
	} 
}


#双分支
package main
import "fmt"
func main()  {
	age := 19
	if age > 18 {
		fmt.Println("aaaaaa")
	} else {
		fmt.Println("bbbbbb")
	}
}


#多分支
package main
import "fmt"
func main()  {
	if age > 35 {
		fmt.Println("ccccc")
	} else if age > 18 {
		fmt.Println("dddd")
	} else {
		fmt.Println("eeeee")
	}
}


#其他写法
package main
import "fmt"
func main()  {
	//age作用域在if代码块中,没有在函数中
	if age := 19; age > 18 {
		fmt.Println("aaaaaa")
	} else {
		fmt.Println("bbbbbb")
	}
}

for循环

#写法一
package main
import "fmt"
func main()  {
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
}

#写法二
package main
import "fmt"
func main()  {
	i := 5
	for ; i < 10; i++ {
		fmt.Println(i)
	}
}

#写法三
package main
import "fmt"
func main()  {
	i := 5
	for i < 10 {
		fmt.Println(i)
		i++
	}
}

#死循环
package main
import "fmt"
func main()  {
	for {
		fmt.Println("123")
	}
}


//99乘法表
package main
import "fmt"
func main()  {
	var c int
	for i := 1; i < 10; i++ {
		for a := 1; a < 10; a++ {
			c = i * a
			fmt.Printf("%d x %d = %d\n",i,a,c)
		}
		fmt.Println()
	}
}


//直角三角形
package main
func main() {
	for i := 1; i < 7; i++ {
		for j := 0; j < i; j++ {
			fmt.Printf("*")
		}
		fmt.Println()
	}
}

range键值循环

  Go语言中可以使用for range遍历数组、切片、字符串、map 及通道(channel)。 通过for range遍历的返回值有以下规律:

  1. 数组、切片、字符串返回索引和值。
  2. map返回键和值。
  3. 通道(channel)只返回通道内的值。
package main
import "fmt"
func main()  {
	s := "hello 北京"
	for i, v := range s {
		fmt.Printf("%d %c\n",i, v)
	}
}

for循环可以通过break、goto、return、panic语句强制退出循环

package main
import "fmt"
func main()  {
	for i := 0;i<10;i++{
		if i == 5{
			break/continue
		}else{
			fmt.Println(i)
		}
	}
}

switch
  可方便地对大量的值进行条件判断,规定每个switch只能有一个default分支

#写法一
package main
import "fmt"
func main()  {
	var n = 3
	switch n {
	case 1:
		fmt.Println("aaa")
	case 2:
		fmt.Println("bbb")
	case 3:
		fmt.Println("ccc")
	default:
		fmt.Println("无效数字")
	}
}


#写法二
package main
import "fmt"
func main()  {
	switch n := 3; n {
	case 1:
		fmt.Println("aaa")
	case 2:
		fmt.Println("bbb")
	case 3:
		fmt.Println("ccc")
	default:
		fmt.Println("无效数字")
	}
}


#写法三,一个分支可以有多个值
package main
import "fmt"
func main()  {
	switch n := 3; n {
	case 1, 3, 5, 7, 9:
		fmt.Println("aaa")
	case 2, 4, 6, 8:
		fmt.Println("bbb")
	default:
		fmt.Println(n)
	}
}


#写法四
package main
import "fmt"
func main()  {
	n := 30
	switch {
	case n < 20:
		fmt.Println("aaa")
	case n >= 20 && n <= 30:
		fmt.Println("bbb")
	case n > 60:
		fmt.Println("ccc")
	default:
		fmt.Println("ddd")
	}
}

goto(跳转到指定标签)
  通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。

package main
import "fmt"
func main() {
	for i := 0; i < 5; i++ {
		// forloop2:
		for j := 0; j < 5; j++ {
			if i == 2 && j == 2 {
				goto forloop1
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	forloop1:
		fmt.Println("aaaaaaaaaa")
}

break
  可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for、switch和 select的代码块上

package main
import "fmt"
func main() {
	BREAKDEMO1:
		for i := 0; i < 10; i++ {
			for j := 0; j < 10; j++ {
				if j == 2 {
					break BREAKDEMO1
				}
				fmt.Printf("%v-%v\n", i, j)
			}
		}
		fmt.Println("...")
}

continue
  可以结束当前循环,开始下一次的循环迭代过程,仅限在for循环内使用。在continue语句后添加标签时,表示开始标签对应的循环。

package main
import "fmt"
func main() {
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\n", i, j)
		}
	}
}

  

posted @ 2020-10-13 12:03  LinuxCBB  阅读(95)  评论(0)    收藏  举报