一篇文章帶你了解Go語言基礎運算子和流程控制
運算子
運算子這個名字聽著玄乎,其實我們平常見的很多了,就像 =
,
#,/
#之類的。
運算子主要分為
-
#算數運算子
關係運算子
#邏輯運算子
#邏輯運算子
##位元運算子
算數運算子
算數運算子顧名思義,主要用在算數中,加減乘除了啥的
#簡單了解以下 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
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 range
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
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

Go爬蟲Colly中的Queue線程問題探討在使用Go語言的Colly爬蟲庫時,開發者常常會遇到關於線程和請求隊列的問題。 �...

Go語言中字符串打印的區別:使用Println與string()函數的效果差異在Go...

GoLand中自定義結構體標籤不顯示怎麼辦?在使用GoLand進行Go語言開發時,很多開發者會遇到自定義結構體標籤在�...

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

Go語言中結構體定義的兩種方式:var與type關鍵字的差異Go語言在定義結構體時,經常會看到兩種不同的寫法:一�...
