go语言学习笔记四 流程控制(if else,switch,for循环)

1 if else 基本使用

package main

import "fmt"

func main() {
	// 基本写法
	a := 1
	b := 2
	if a == 2 {
		fmt.Printf("1.满足第一个条件\n")
	} else if b == 2 {
		fmt.Printf("2.满足第二个条件\n")
	} else {
		fmt.Printf("3.满足其他条件\n")
	}

	// go 支持在判断语句中定义变量
	if age := 20; age < 18 {
		fmt.Printf("4.age小于18 age:%v\n", age)
	} else {
		fmt.Printf("5.age大于18 age:%v\n", age)
	}

	// 嵌套分支
	a1, a2 := 1, 2
	if a1 == 1 {
		fmt.Printf("6.满足第一层if条件\n")
		if a2 == 3 {
			fmt.Printf("7.满足第二层if条件\n")
		} else {
			fmt.Printf("8.满足第二层else条件\n")
		}
	} else {
		fmt.Printf("9.满足else条件\n")
	}

}

输出

2.满足第二个条件
5.age大于18 age:20
6.满足第一层if条件
8.满足第二层else条件

2 switch 基本使用

package main

import "fmt"

func sum(a int) (ret int) {
	return a + 1
}

func main() {
	// switch 后面的类型要和case后面的类型相同
	// case 后面有多个表达用 ,分开,满足1个就为真,每一个case后面的条件都不同
	a := 10
	switch sum(a) {
	case 11:
		fmt.Printf("1.a==11\n")
	case 2, 3:
		fmt.Printf("2.a==2 or a==3\n")
	case 4:
		fmt.Printf("3.a==4\n")
	default:
		fmt.Printf("4.default\n")
	}
	// switch 后面不加表达式 可以当if else使用
	switch {
	case sum(a) < 1:
		fmt.Printf("5.sum(a)<1\n")
	case sum(a) < 10:
		fmt.Printf("6.sum(a)<10\n")
	case sum(a) == 11:
		fmt.Printf("7.sum(a)==11\n")
	default:
		fmt.Printf("8.default\n")
	}
	// switch 穿透 不常用
	switch {
	case sum(a) < 1:
		fmt.Printf("9.sum(a)<1\n")
	case sum(a) == 11:
		fmt.Printf("10.sum(a)==11\n")
		// 满足条件穿透输出下一个case的值 等价于 case sum(a) == 11, sum(a) == 12
		fallthrough
	case sum(a) == 12:
		fmt.Printf("11.switchc穿透 sum(a)==12\n")

	default:
		fmt.Printf("12.default\n")
	}
}

输出

1.a==11
7.sum(a)==11
10.sum(a)==11
11.switchc穿透 sum(a)==12

3. for 循环

package main

import "fmt"

func main() {
	// for 循环
	for i := 1; i <= 10; i++ {
		fmt.Printf("1.循环次数%d\n", i)
	}
	// 使用range 返回index和 切片的值
	slice1 := [] int64 {100, 200, 300}
	for i, c :=range slice1{
		fmt.Printf("2.i:%v,c:%v\n", i, c)
	}
	//range也可以用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。
	// 获取字符串的值 使用 %c
	var str = "go"
	for i, c := range str {
		fmt.Printf("3.index:%d, Unicode的值:%v, value:%c\n", i, c, c)
	}
}

输出结果

1.循环次数1
1.循环次数2
1.循环次数3
1.循环次数4
1.循环次数5
1.循环次数6
1.循环次数7
1.循环次数8
1.循环次数9
1.循环次数10
2.i:0,c:100
2.i:1,c:200
2.i:2,c:300
3.index:0, Unicode的值:103, value:g
3.index:1, Unicode的值:111, value:o

猜你喜欢

转载自blog.csdn.net/qq_38165374/article/details/105241920
今日推荐