这次咱们继续学习Go基础之运算符和流程控制。 运算符 运算符这个名字听着玄乎,其实我们平常见的很多了,就像 = , + , / 之类的。 运算符主要分为 算数运算符 关系运算符 逻辑运算符
运算符这个名字听着玄乎,其实我们平常见的很多了,就像=
,+
,/
之类的。
运算符主要分为
算数运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
下面就来简单了解以下叭。
算数运算符顾名思义,主要用在算数中,加减乘除了啥的
简单了解以下叭。
关系运算符
逻辑运算符
注:逻辑运算符是很重要的,开发中经常用到。
位运算符
位运算符有些底层,特殊情况会用到
赋值运算符
赋值运算符在开发中用的也是比较多的。
流程控制
在Go中,流程控制有以下几种。
if
if
switch case
for
标准for
forrange
goto(慎用)
if
语法
//方式一,一个if if 条件{ //执行语句 } //方式二,if条件不成功执行else if 条件{ //if成功语句 }else{ //if不成功语句 } //方式三,带有else if得 if 条件1{ //if成功语句 }else if 条件2{ //if不成功,继续else if条件 }else{ //上面都不成功,执行else }
例子
package main import "fmt" func main() { var gender = "男" if gender == "男" { fmt.Println("男") } else if gender == "女" { fmt.Println("女") } else { fmt.Println("啥都不是???") } }
switch case
switch case
和if
本质是一个东西,但是在某些场景,switch
是比if
更加简洁的。
代码
package main import "fmt" func main() { var week = 3 switch week { case 1: fmt.Println("周一") case 2: fmt.Println("周二") case 3: fmt.Println("周三") case 4: fmt.Println("周四") case 5: fmt.Println("周五") case 6: fmt.Println("周六") case 7: fmt.Println("周日") default://如果上面都没执行,会执行default fmt.Println("星期八????") } }
注:在Go中,switch
是没有case穿透的。
Go的switch
可以case
多个值。
package main import "fmt" func main() { var week = 3 switch week { case 1, 2, 3, 4, 5: fmt.Println("上班") case 6: fmt.Println("周六睡懒觉") case 7: fmt.Println("周日去旅游") default: fmt.Println("飞天了???") } }
for
标准for循环
语法
for 初始条件;判断条件;结束条件{ 语句 }
代码
package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println(i) } }
谨慎执行!!!
package main import "fmt" func main() { for{ fmt.Println("666") } }
for ragne
可以很方便循环数组,切片,字符串,map,channel等。
遍历数组示例
package main import "fmt" func main() { var student_list = [...]string{"张三", "李四", "王五"} for index, v := range student_list { //index为下标,v是每一个的值 fmt.Println(index, v) } }
注:
如果数组,切片,字符串 index是下标,v是值 如果是map index是键,v是对(值) 如果是通道 只有一个值,就是通道内的值
补充:
在Go中,只有for循环,没有while。
for循环就两种方式。
goto
可以通过标签在代码间无条件跳转,这就造成了一个局面,如果使用gote
过多,会造成逻辑混乱,跳来跳去。
所以,在开发中,要慎用,不到万不得已,不要使用。
示例
package main import "fmt" func main() { for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if j == 2 { // 直接跳转到下面的 breakTag 标签 goto breakTag } fmt.Printf("%v-%v\n", i, j) } } //要跳转的标签 breakTag: fmt.Println("结束for循环") }