流程控制

☆樱花仙子☆ 提交于 2019-11-29 07:32:05

流程控制

if、else语句

package main
import (
	"fmt"
	"strconv"
)

// // 1、if/else分支判断
// func if1() {
// 	//1、if
// 	if 条件1 {

// 	}
// 	//2、if/else
// 	if 条件2 {

// 	} else {

// 	}
// 	//3、多次判断
// 	if 条件3 {

// 	} else if 条件 {

// 	} else if 条件 {

// 	}
// }

//2、判断是否报错

func if2() {
	var str string
	fmt.Scanf("%s", &str)
	number, err := strconv.Atoi(str)
	if err != nil {
		fmt.Println("convert faild,err:", err)
		return
	}
	fmt.Println(number)
}

func main() {
	if2()
}

switch、case语句

package main

import (
	"fmt"
	"math/rand"
)
//1、if分支判断或者使用switch case语句 (switch 后面有条件)
func switch3() {
	var a int
	fmt.Scanf("%s", &a)
	fmt.Printf("%T", a)
	switch a {
	case 0:
		fmt.Println("a is eq 0")
		fmt.Println("yes", 0)
		fallthrough //这个分支执行完成后,继续往下面的分支走
	case 10, 11:
		fmt.Println("a is eq 10")
	default:
		fmt.Println("a is eq default")
	}
}

//2、if分支判断或者使用switch case语句 (switch 后面无条件,case后面是条件)
func switch4() {
	var a int
	fmt.Scanf("%s", &a)
  
	switch {
	case a > 0 && a < 10:
		fmt.Println("a is eq 0")
		fmt.Println("yes", a)
	case a > 10:
		fmt.Println("a is eq 10")
	default:
		fmt.Println("a is eq default")
	}
}

//3、使用switch case语句 (switch 后面有条件,case后面是条件)
func switch5() {
	var a int
	fmt.Scanf("%s", &a)
  
	switch a := 100; {
	case a > 0 && a < 10:
		fmt.Println("a is eq 0")
		fmt.Println("yes", a)
	case a > 10:
		fmt.Println("a is eq 10")
	default:
		fmt.Println("a is eq default")
	}
}

//4、猜数字练习,随机生成一个0到100的数,用户在终端输入数字,如果等于n,提示猜对了,如果不相同,提示大于还是小于
func nums() {
	var n int
	n = rand.Intn(100) //100以内的随机数
	for {
		var input int
		fmt.Scanf("%d\n", &input)
		flag := false
    
		switch {
		case input == n:
			fmt.Println("you are right")
			flag = true
		case input > n:
			fmt.Println("bigger")
		default:
			fmt.Println("less")
		}
		if flag {
			break
		}
	}
}
//5、case后面可以是多个值
switch n:=7;n{
  case 1,3,5,7,9:
  fmt.Println("奇数")
  case 2,4,6,8,0:
  fmt.Println("偶数")
  default:
  fmt.Println("n")
}

func main() {
	nums()
}

for 语句

// for语句的写法:
// for 初始化语句;条件判断;变量修改{
// }

	// for 变形1
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
	// for 变形2
	var i = 0
	for ; i < 10; i++ {
		fmt.Println(i)
	}
	fmt.Println(i)
	// for 变形3
	var j = 0
	for j < 10 {
		fmt.Println(j)
		j++
	}

	// for 变形4
	for {
		fmt.Println("无限循环")
	}

for range

//2、for range语句,用来遍历数组,slice,map,chan
func for2() {
	str := "hello world,中国"
	for i, v := range str {
		fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
	}
}

break/continue

break 终止本层的for循环

continue 跳出本次循环,继续下次循环

//3、break continue语句
func for3() {
	str := "hello world,中国"
	for i, v := range str {
		if i > 2 {
			continue
		}
		if i > 3 {
			break
		}
		fmt.Printf("index[%d] val[%c] len[%d]\n", i, v, len([]byte(string(v))))
	}
}

goto和label语句

//4-1、goto和label语句
func for4() {
label1:
	for i := 0; i <= 5; i++ {
		for j := 0; j <= 5; j++ {
			if j == 4 {
				continue label1 //continue label1,就直接跳转到label1的地方再次执行代码(内层的for循环会终止)
			}
			fmt.Printf("i is: %d,and j is:%d\n", i, j)
		}
	}
}

//4-2、goto和label语句(here)
func for4_2() {
	i := 0
here:
	println(i)
	i++
	if i == 5 {
		return
	}
	goto here //这个只能在同一个函数里面去goto到指定代码,继续执行代码
}

func main() {
	// prints(10)
	// for1(10)
	// for2()
	// for3()
	// for4()
	for4_2()

}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!