一篇文章帶你了解Go語言基礎(chǔ)之運(yùn)算符和流程控制
回復(fù)“Go語言”即可獲贈Python從入門到進(jìn)階共10本電子書
上篇文章中我們學(xué)習(xí)了Go語言基礎(chǔ)中的變量,一篇文章帶你了解Go語言基礎(chǔ)之變量,這篇文章我們繼續(xù)介紹Go語言基礎(chǔ)知識,今天跟大家分享的是基礎(chǔ)數(shù)據(jù)類型之運(yùn)算符和流程控制,一起來學(xué)習(xí)下吧~
前言
Hey,大家好呀,我是星期八,這次咱們繼續(xù)學(xué)習(xí)Go基礎(chǔ)之運(yùn)算符和流程控制叭。
運(yùn)算符
運(yùn)算符這個名字聽著玄乎,其實(shí)我們平常見的很多了,就像=,+,/之類的。
運(yùn)算符主要分為
算數(shù)運(yùn)算符
關(guān)系運(yùn)算符
邏輯運(yùn)算符
位運(yùn)算符
賦值運(yùn)算符
下面就來簡單了解以下叭。
算數(shù)運(yùn)算符
算數(shù)運(yùn)算符顧名思義,主要用在算數(shù)中,加減乘除了啥的
簡單了解以下叭。
| 運(yùn)算符 | 描述 |
|---|---|
| + | 相加 |
| - | 相減 |
| * | 相乘 |
| / | 相除 |
| % | 求余 |
| ++ | 自加 |
| -- | 自減 |
關(guān)系運(yùn)算符
| 運(yùn)算符 | 描述 |
|---|---|
| == | 檢查兩個值是否相等,如果相等返回 True 否則返回 False |
| != | 檢查兩個值是否不相等,如果不相等返回 True 否則返回 False |
| > | 檢查左邊值是否大于右邊值,如果是返回 True 否則返回 False |
| >= | 檢查左邊值是否大于等于右邊值,如果是返回 True 否則返回 False |
| < | 檢查左邊值是否小于右邊值,如果是返回 True 否則返回 False |
| <= | 檢查左邊值是否小于等于右邊值,如果是返回 True 否則返回 False |
邏輯運(yùn)算符
| 運(yùn)算符 | 描述 |
|---|---|
| && | 邏輯 and 運(yùn)算符。 如果兩邊的操作數(shù)都是 True,則為 True,否則為 False |
| || | 邏輯 or 運(yùn)算符。 如果兩邊的操作數(shù)有一個 True,則為 True,否則為 False |
| ! | 邏輯 NOT 運(yùn)算符。 如果條件為 True,則為 False,否則為 True |
注:邏輯運(yùn)算符是很重要的,開發(fā)中經(jīng)常用到。
位運(yùn)算符
位運(yùn)算符有些底層,特殊情況會用到
| 運(yùn)算符 | 描述 |
|---|---|
| & | 參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相與。 (兩位均為1才為1) |
| | | 參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相或。 (兩位有一個為1就為1) |
| ^ | 參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)位相異或,當(dāng)兩對應(yīng)的二進(jìn)位相異時,結(jié)果為1。 (兩位不一樣則為1) |
| << | 左移n位就是乘以2的n次方。 “a< |
| >> | 右移n位就是除以2的n次方。 “a>>b”是把a(bǔ)的各二進(jìn)位全部右移b位。 |
賦值運(yùn)算符
賦值運(yùn)算符在開發(fā)中用的也是比較多的。
| 運(yùn)算符 | 描述 |
|---|---|
| = | 簡單的賦值運(yùn)算符,將一個表達(dá)式的值賦給一個左值 |
| += | 相加后再賦值 |
| -= | 相減后再賦值 |
| *= | 相乘后再賦值 |
| /= | 相除后再賦值 |
| %= | 求余后再賦值 |
| <<= | 左移后賦值 |
| >>= | 右移后賦值 |
| &= | 按位與后賦值 |
| |= | 按位或后賦值 |
| ^= | 按位異或后賦值 |
流程控制
在Go中,流程控制有以下幾種。
if
if
switch case
for
標(biāo)準(zhǔn)for
forrange
goto(慎用)
if
語法
//方式一,一個ifif 條件{//執(zhí)行語句}//方式二,if條件不成功執(zhí)行elseif 條件{//if成功語句}else{//if不成功語句}//方式三,帶有else if得if 條件1{//if成功語句}else if 條件2{//if不成功,繼續(xù)else if條件}else{//上面都不成功,執(zhí)行else}
例子
package mainimport "fmt"func main() {var gender = "男"if gender == "男" {fmt.Println("男")} else if gender == "女" {fmt.Println("女")} else {fmt.Println("啥都不是???")}}
switch case
switch case和if本質(zhì)是一個東西,但是在某些場景,switch是比if更加簡潔的。
代碼
package mainimport "fmt"func main() {var week = 3switch 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://如果上面都沒執(zhí)行,會執(zhí)行defaultfmt.Println("星期八????")}}
注:在Go中,switch是沒有case穿透的。
Go的switch可以case多個值。
package mainimport "fmt"func main() {var week = 3switch week {case 1, 2, 3, 4, 5:fmt.Println("上班")case 6:fmt.Println("周六睡懶覺")case 7:fmt.Println("周日去旅游")default:fmt.Println("飛天了???")}}
for
標(biāo)準(zhǔn)for循環(huán)
語法
for 初始條件;判斷條件;結(jié)束條件{語句}
代碼
package mainimport "fmt"func main() {for i := 0; i < 10; i++ {fmt.Println(i)}}
無限循環(huán)
謹(jǐn)慎執(zhí)行!!!
package mainimport "fmt"func main() {for{fmt.Println("666")}}
for range
for ragne可以很方便循環(huán)數(shù)組,切片,字符串,map,channel等。
遍歷數(shù)組示例
package mainimport "fmt"func main() {var student_list = [...]string{"張三", "李四", "王五"}for index, v := range student_list {//index為下標(biāo),v是每一個的值fmt.Println(index, v)}}
注:
如果數(shù)組,切片,字符串index是下標(biāo),v是值如果是mapindex是鍵,v是對(值)如果是通道只有一個值,就是通道內(nèi)的值
補(bǔ)充:
在Go中,只有for循環(huán),沒有while。
for循環(huán)就兩種方式。
goto
goto可以通過標(biāo)簽在代碼間無條件跳轉(zhuǎn),這就造成了一個局面,如果使用gote過多,會造成邏輯混亂,跳來跳去。
所以,在開發(fā)中,要慎用,不到萬不得已,不要使用。
示例
package mainimport "fmt"func main() {for i := 0; i < 10; i++ {for j := 0; j < 10; j++ {if j == 2 {// 直接跳轉(zhuǎn)到下面的 breakTag 標(biāo)簽goto breakTag}fmt.Printf("%v-%v\n", i, j)}}//要跳轉(zhuǎn)的標(biāo)簽breakTag:fmt.Println("結(jié)束for循環(huán)")
}
總結(jié)
上述我們學(xué)習(xí)了Go基礎(chǔ)之運(yùn)算符和流程控制。如果在操作過程中有任務(wù)問題,記得下面討論區(qū)留言,我們看到會第一時間解決問題。
我是碼農(nóng)星期八,如果覺得還不錯,記得動手點(diǎn)贊一下哈。感謝你的觀看。
-------------------?End?-------------------

歡迎大家點(diǎn)贊,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群】
萬水千山總是情,點(diǎn)個【在看】行不行
