一篇文章帶你了解 Go 語言基礎(chǔ)之運(yùn)算符和流程控制
前言
Hey,大家好呀,我是星期八,這次咱們繼續(xù)學(xué)習(xí)Go基礎(chǔ)之運(yùn)算符和流程控制叭。
運(yùn)算符
運(yùn)算符這個名字聽著玄乎,其實我們平常見的很多了,就像=,+,/之類的。
- 運(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<<b”是把a(bǔ)的各二進(jìn)位全部左移b位,高位丟棄,低位補(bǔ)0。 |
>> | 右移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
語法
- //方式一,一個if
- if 條件{
- //執(zhí)行語句
- }
- //方式二,if條件不成功執(zhí)行else
- if 條件{
- //if成功語句
- }else{
- //if不成功語句
- }
- //方式三,帶有else if得
- if 條件1{
- //if成功語句
- }else if 條件2{
- //if不成功,繼續(xù)else if條件
- }else{
- //上面都不成功,執(zhí)行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本質(zhì)是一個東西,但是在某些場景,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://如果上面都沒執(zhí)行,會執(zhí)行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
標(biāo)準(zhǔn)for循環(huán)
語法
- for 初始條件;判斷條件;結(jié)束條件{
- 語句
- }
代碼
- package main
- import "fmt"
- func main() {
- for i := 0; i < 10; i++ {
- fmt.Println(i)
- }
- }
無限循環(huán)
謹(jǐn)慎執(zhí)行!!!
- package main
- import "fmt"
- func main() {
- for{
- fmt.Println("666")
- }
- }
for range
for ragne可以很方便循環(huán)數(shù)組,切片,字符串,map,channel等。
遍歷數(shù)組示例
- package main
- import "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是值
- 如果是map
- index是鍵,v是對(值)
- 如果是通道
- 只有一個值,就是通道內(nèi)的值
補(bǔ)充:
在Go中,只有for循環(huán),沒有while。
for循環(huán)就兩種方式。
goto
goto可以通過標(biāo)簽在代碼間無條件跳轉(zhuǎn),這就造成了一個局面,如果使用gote過多,會造成邏輯混亂,跳來跳去。
所以,在開發(fā)中,要慎用,不到萬不得已,不要使用。
示例
- package main
- import "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)贊一下哈。感謝你的觀看。
本文轉(zhuǎn)載自微信公眾號「Go語言進(jìn)階學(xué)習(xí)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Go語言進(jìn)階學(xué)習(xí)公眾號。