91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言運算符與控制結構實例代碼分析

發布時間:2023-02-28 15:52:27 來源:億速云 閱讀:123 作者:iii 欄目:開發技術

這篇文章主要講解了“Go語言運算符與控制結構實例代碼分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Go語言運算符與控制結構實例代碼分析”吧!

    運算符

    運算符的作用是將操作數組合成表達式,比如下面的代碼中,我們通過賦值和加號組成了兩個表達式:

    var i,j = 1,2
    n := i + j

    Go的運算符大體分為六種:算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符和指針運算符。

    算術運算符

    運算符含義
    +加號,除了用于整數,浮點數,復數外,還可以用于字符串的拼接
    -減號
    *相乘
    /相除
    %求余,只能用于整數
    ++自增
    --自減
    +正數,注意與加號(+)的區別
    -負數,注意與減號(-)的區別

    用法示例:

    var str1 string = "hello"
    var str2 string = "world"
    str := str1 + str2 //使用+號拼接字符串
    
    i := 3.2 % 2 //報錯,只能對整數求余
    
    var n int = 1
    n++ 
    ++n //錯誤,自增只能加了操作數后面,自減也是同樣的

    關系運算符

    通過邏輯運算符組成的表達式,其計算結果為布爾值,一般用于控制結構的條件部分:

    運算符含義
    ==相等
    !=不相等
    <=小于或等于
    <小于
    >=大于或等于

    用法示例:

    if 2 == (1 + 1) {
    	fmt.Println("相等")
    }

    邏輯運算符

    邏輯運算符組成的表達式,其計算結果也同樣蠅布爾值,因此也用于控制結構的條件部分:

    運算符含義
    &&邏輯與
    ||邏輯或
    !邏輯非,一元運算符,具有較高的優先級

    位運算符

    位運算符只能用于整數

    運算符含義
    &按位與,兩個操作數都1的位置為1,否為0
    |按位或,兩個操作數只要有1的位置,都為1,否則為0
    按位異或,兩個操作數都相同為0,否則為1
    <<按位左移
    >>按位右移
    &^按位清空,根據右邊操作數為1的位置,將左邊對應位置設為0。

    用法示例:

    fmt.Println(2 & 1) // 00000010 & 00000001,可以看出,沒有哪個位置兩個操作都為1,因此結果為:00000000
    fmt.Println(2 | 1) // 00000010 & 00000001,結果為00000011,也就是3
    fmt.Println(2 ^ 1) // 00000010 & 00000001,結果為00000011,也就是3
    
    fmt.Println(1 << 1) //00000001 => 00000010 
    fmt.Println(2 >> 1) //00000010 => 00000001
    
    fmt.Println(23 &^ 5) 00010111 &^ 00000101 => 00010010

    賦值運算符

    運算符含義
    = :=賦值
    +=先將左側與右側的操作數相加,再賦值給左邊的變量
    -=先將左側與右側的操作數相減,再賦值給左邊的變量
    *=先將左側與右側的操作數相乘,再賦值給左邊的變量
    /=先將左側與右側的操作數相除,再賦值給左邊的變量
    %=先將左側與右側的操作數求余,再賦值給左邊的變量
    <<=先將左側的操作數按右側的操作數向左位移,再將位移結果賦給左邊的變量
    >>=先將左側的操作數按右側的操作數向右位移,再將位移結果賦給左邊的變量
    &=先將左側與右側的操作數進行按位與計算,再將計算結果賦給左邊的變量
    !=先將左側與右側的操作數進行按位或計算,再將計算結果賦給左邊的變量
    ^=先將左側與右側的操作數進行按異或計算,再將計算結果賦給左邊的變量

    指針運算符

    運算符含義
    &獲取變量在內存中的地址
    *聲明指針變量

    運算符的優先級

    Go的++與--運算符作用于操作數時形成的是表達式,因此不納入運算符的優先級中。

    在Go語言中,一元運算符具有更高的優先級,如+(正數), -(負數),!(取反),*(指針聲明), &(取址)。

    而賦值運算符的優先級最低,除了一元運算符以及賦值運算符外,剩下的運算符可以劃分為五個優先等級:

    優先級運算符
    5* / % << >> & &^
    4+ - | ^
    3== != < <= >= >
    2&&
    1||

    控制結構

    Go的控制結構包括if語句、for語句和switch語句三種。

    If

    if語句用于判斷某個條件是否滿足,如果滿足,則執行if語句中的代碼塊,如果不滿足,則忽略if語句中的代碼塊并繼續向后執行。

    最簡單的if語句結構為:

    if boolean expression {
    	// do something	
    }

    其中boolean expression為一個可以得到布爾值的表達式,當布爾值為true,會執行if語句中的代碼塊,如:

    if 2 < 10 {
    	fmt.Println("ok")
    }

    除了用于判斷的boolean expression外,if也可以包含一個初始化表達式:

    if initialization;boolean expression{
    	// do something	
    }

    這種情況下,if會先執行初始化表達式,之后再判斷boolean expression得到的布爾是否為true

    if i = 10;i < 100 {
    	fmt.Println("ok")
    }

    if語句后面也可以跟上else語句,當然if條件不滿足時,會執行else語句中的代碼塊:

    if boolean expression{
    	// do something	
    }else{
    	// do something	
    }

    用法示例:

    if i = 11;i < 11{
    	fmt.Println("ok")
    }else{
    	fmt.Println("bad")
    }

    如果有多個分支條件判斷,可以在if語句后面跟上多個else if 語句,最后可以跟上else語句,當所有條件都不滿足時,會執行else語句中的代碼塊:

    if boolean expression1 {
    	// do something	
    } else if boolean expression2 {
    	// do something else	
    } else if boolean expression3 {
    	// do something else	
    }else {
    	// catch-all or default
    }

    For

    for語句用于根據條件循環執行其中的代碼塊,最簡單的for語句格式如下:

    for condition {
    	//do something
    }

    condition為一個可得到布爾值的表達式,Go語言中并沒有while或者do-while語句,因此這種方式的用法接近其他編程語言的while或者do-while語句:

    x := 1
    for x < 20{
    	fmt.Println(x)
    	x++
    }

    如果condition為空,那么此時for則為死循環:

    for {
    	//do something
    }

    for最經典,在其他編程語言也有的用法是下面這種形式:

    for init statement;condition;post statement{
    	//do something
    }

    用法示例:

    for i := 0; i< 10 ;i++ {
    	fmt.Println(i)
    }

    另外,for語句還與關鍵字range配合,可以用于遍歷數組、map和切片等,其作用類似PHP中的foreach語句:

    for k,v := range array {
    	//do something
    }

    用法示例:

    var a [10]int = [10]int{1,2,3,4,5,6,7,8,9,10}
    
    for index,value := range a {
    	fmt.Println(index,value)
    }

    使用break關鍵字結束循環

    for i := 0; i < 10; i++ {
    	if i == 5 {
    		break
    	}
    	fmt.Println(i)
    }

    使用continue結束跳過單次循環:

    for i := 0;i<10;i++{
    	if i == 5 {
    		continue
    	}
    	fmt.Println(i)
    }

    Switch

    Switch與if類似,用于根據條件執行滿足條件的代碼塊,但其用法與if不同,switch有幾種不同的用法:

    第一種使用方法會將switch后面的值與case后面所跟的值進行比較,滿足條件則執行case中的代碼塊,如果都不滿足,則執行default中的代碼塊,其結構如下所示:

    switch var1 {
    	case val1:
    		...
    	case val2:
    		...
    	default:
    		...
    }

    用法示例:

    var x = 8
    switch x {
    	case 8 :
    		fmt.Println("8")
    	case 9 :
    	  fmt.Println("9")
    	case 10 :
    	  fmt.Println("10")
    	default :
    		fmt.Println("not found")
    }

    從上面的例子可以看出,在滿足某個條件后,switch執行完該分支就會退出switch語句,不需要像其他編程語言一樣使用break來退出switch語句。

    如果不想退出switch語句,需要繼續讓switch語句往下執行,可以在case語句內使用fallthrough關鍵詞:

    var x = 8
    switch x {
    	case 8 :
    		fmt.Println("8")
    		fallthrough
    	case 9 :
    	  fmt.Println("9")
    	  fallthrough
    	case 10 :
    	  fmt.Println("10")
    	default :
    		fmt.Println("not found")
    }

    上面語句在匹配到case 8:之后,碰到了fallthrough語句,所以繼續往下執行,接著繼續碰到fallthrough語句,再繼續執行,因此三個case代碼塊都會被執行。

    switch的另一種用法是將后面的變量省略,而把執行的判斷條件放在case關鍵詞后面,這個用法與if/elseif語句類似:

    switch {
    	case condition1:
    		...
    	case condition2:
    		...
    	default:
    		...
    }

    用法示例:

    x := 10
    switch {
    	case x >= 10:
    		fmt.Println("10")
    	case x > 11:
    		fmt.Println("11")
    	default:
    		fmt.Println("not found")
    }

    switch后面可以跟上一個初始化語句:

    switch initialization {
    	case condition1:
    		...
    	case condition2:
    		...
    	default:
    		...
    }

    用法示例:

    switch x := 10; {
    	case x >= 10:
    		fmt.Println("10")
    	case x > 11:
    		fmt.Println("11")
    	default:
    		fmt.Println("not found")
    }

    type-switchswitch語句的另一種用法,主要用于類型斷言。

    感謝各位的閱讀,以上就是“Go語言運算符與控制結構實例代碼分析”的內容了,經過本文的學習后,相信大家對Go語言運算符與控制結構實例代碼分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    潮安县| 安远县| 云梦县| 唐山市| 新安县| 黄梅县| 同心县| 甘德县| 宜兴市| 万年县| 晋中市| 库车县| 胶南市| 江津市| 鹤岗市| 鲁甸县| 临朐县| 安丘市| 安岳县| 松江区| 莒南县| 茌平县| 资中县| 同仁县| 安平县| 平陆县| 灵璧县| 茌平县| 宜昌市| 郑州市| 泗阳县| 郓城县| 石楼县| 连南| 疏勒县| 保亭| 美姑县| 汶川县| 郸城县| 大同县| 龙门县|