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
}
}


posted @ 2022-04-24 17:09  黑羽青衣  阅读(40)  评论(0编辑  收藏  举报