Go学习笔记(四)
switch分支结构
1、switch语句基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,直到匹配为止
2、匹配项后面不需要带break
switch 表达式{
case 表达式1,表达式2:
语句1
case 表达式3,表达式4:
语句2
default:
语句
}
golang的case后的表达式可以多个,使用逗号间隔,也不需要加break
case后面的数据类型要保持一致,不一致会导致报错
case后面的表达式如果是常量值(字面量),则要求不能重复(变量无法检测)
default语句不是必须的
switch 后面可以不跟表达式,当做if else来使用
var age int = 10
switch {
case age == 10:
执行语句
case age == 20:
执行语句
}
switch 可以对范围进行判断
switch后面可以定义声明一个变量,分号结束,但是不推荐
switch 穿透-fallthrough,如果在case语句块后增加fallthrough,则会继续执行下一个case内的执行语句(不执行判断),但只能穿透一层,也叫switch穿透
type switch : switch 语句还可以被用type-switch来判断某个interface(接口)变量中实际指向的变量类型
golang内的switch和if的区别不大
switch 和 if 的区别
1、如果判断的具体数值不多,而且符合整数、浮点数、字符、字符串这几种类型。
建议用switch语句,简洁高效
2、其他情况:对区间判断和结果为bool为类型的判断。使用if,if的使用范围更广
for循环控制
可以循环执行
基本语法
for 循环变量初始化; 循环条件; 循环遍历迭代{
循环操作语句
}
说明for循环四要素
1、循环变量初始化
2、循环条件
3、循环操作语句(循环体)
注意事项和细节
1、循环条件是返回一个布尔值的表达式
2、for循环的第二种使用方式
for 循环判断条件 {
}
变量的初始化和迭代写到其他位置
3、for循环的第三种方式
for {
循环执行语句
}
上面的写法等价 for ;;{} 是一个无限循环。通常需要配合break语句使用,否则就是个死循环
4、Golang提供 for-range的方式,可以方便遍历字符串和数组
传统方式遍历字符串是不能含中文,否则会给你取出字节(看上去就是乱码),其原因传统的遍历是按照字节来统计遍历的,一个汉字在utf-8编码是对应着3个字节
可以把str转成[]rune 切片可以解决这个问题,但是目前仅仅能用于在传统的遍历方式
for-range可以包含中文
var str string = "hello,world!“
for i := 0; i < len(str); i++ {
fmt.printf("%c", str[i])
}
func main() {
var str = "test~ok"
for index, val := range str {
fmt.Printf("index=%d, val=%c \n", index, val)
}
}
for-range是按照字符来遍历的,不是按字节来遍历的
while 和 do .. while 的实现
Go语音没有while 和do while语法,切记。
如果需要类似这样的语言(包括类似Python,JAVA都有),可以通过for循环来实现类似的使用效果
其实就在for内加上if语句,如果符合就break跳出循环,否则就继续执行
while
var c int = 1
for {
if c > 10 {
break
}
fmt.Println("HELLO WORLD")
c++
}
do while
先做了,再实现判断
var j int = 1
for {
fmt.Println("hello,ok", j)
j++
if j > 10 {
break
}
}