運算子這個名字聽著玄乎,其實我們平常見的很多了,就像 =
,
#,/
#之類的。
運算子主要分為
#算數運算子
關係運算子
#邏輯運算子
#邏輯運算子
##位元運算子
算數運算子顧名思義,主要用在算數中,加減乘除了啥的
#簡單了解以下 Ranger。
運算子 | |
---|---|
##- | |
#已減 | |
######### ###########*################################################################################# ######/###### | 相除 |
% | 求餘 |
#自加 | -- |
#運算子 | 描述 |
---|---|
== | 檢查兩個值是否相等,如果相等回傳True 否則回傳False |
!= | 檢查兩個值是否不相等,如果不相等回傳True 否則回傳False |
> | 檢查左邊值是否大於右邊值,如果是傳回True 否則回傳False |
>= | #檢查左邊值是否大於等於右邊值,如果是返回True 否則回傳False |
#< | ##檢查左邊值是否小於右邊值,如果是回傳True 否則回傳False |
<= | 檢查左邊值是否小於等於右邊值,如果是傳回True 否則回傳False |
#運算符 | 描述 |
---|---|
#&& | 邏輯and 運算子。如果兩邊的運算元都是True,則為True,否則為False |
|| | 邏輯or 運算子。如果兩邊的運算元有一個True,則為True,否則為False |
##! |
註:邏輯運算子是很重要的,開發中常用到。
#位元運算子有些底層,特殊情況會用到
#運算子 | |
---|---|
#& | ##參與運算的兩數各對應的二進位相與。 (兩位皆為1才為1) |
#| | 參與運算的兩數各對應的二進位相或。 (兩位有一個為1就為1) |
############### ####參與運算的兩數各對應的二進位相異或,當兩個對應的二進位相異時,結果為1。(兩位不一樣則為1) | |
#<< | 左移n位就是乘以2的n次方。 「a< |
#>> | 右移n位就是除以2的n次方。 「a>>b」是把a的各二進位全部右移b位。 |
#賦值運算子在開發中用的也是比較多的。
運算子 | |
---|---|
#= | #簡單的賦值運算符,將一個表達式的值賦給一個左值 |
# = | 相加後再賦值 |
-= | 相減後再賦值 |
*= | 相乘後再賦值 |
/= | #在相除後再賦值 |
##%= | #求餘後再賦值 |
#左移後賦值 | |
#右移後賦值#########################右移後賦值###### ##################&=###################以位元與後賦值####################以位元與後賦值####### #################|######=####### | 以位元或後賦值 |
^= |
#在Go中,流程控制有以下幾種。
if
if
switch case
#for
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
和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 初始条件;判断条件;结束条件{ 语句 }
代码
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循环") }
以上是一篇文章帶你了解Go語言基礎運算子和流程控制的詳細內容。更多資訊請關注PHP中文網其他相關文章!