04Go基本語法

Go基本語法

[TOC]java

一、運算符

Go 語言內置的運算符有:算術運算符、關係運算符、邏輯運算符、位運算符、賦值運算符、其餘運算符。函數

(1)算數運算符
運算符 描述
+ 相加
- 相減
* 相乘
/ 相除
% 求餘
++ 自增
-- 自減
(2)關係運算符
運算符 描述
== 檢查兩個值是否相等,若是相等返回 True 不然返回 False。
!= 檢查兩個值是否不相等,若是不相等返回 True 不然返回 False。
> 檢查左邊值是否大於右邊值,若是是返回 True 不然返回 False。
< 檢查左邊值是否小於右邊值,若是是返回 True 不然返回 False。
>= 檢查左邊值是否大於等於右邊值,若是是返回 True 不然返回 False。
<= 檢查左邊值是否小於等於右邊值,若是是返回 True 不然返回 False。
(3)邏輯運算符
運算符 描述
&& 邏輯 AND 運算符。 若是兩邊的操做數都是 True,則條件 True,不然爲 False。
\ \ 邏輯 OR 運算符。 若是兩邊的操做數有一個 True,則條件 True,不然爲 False。
! 邏輯 NOT 運算符。 若是條件爲 True,則邏輯 NOT 條件 False,不然爲 True。
(4)位運算符
運算符 描述
& 按位與運算符"&"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相與。
\ 按位或運算符"\ "是雙目運算符。 其功能是參與運算的兩數各對應的二進位相或。
^ 按位異或運算符"^"是雙目運算符。 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果爲1。
<< 左移運算符"<<"是雙目運算符。左移n位就是乘以2的n次方。 其功能把"<<"左邊的運算數的各二進位所有左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。
>> 右移運算符">>"是雙目運算符。右移n位就是除以2的n次方。 其功能是把">>"左邊的運算數的各二進位所有右移若干位,">>"右邊的數指定移動的位數。
(5)賦值運算符
運算符 描述
= 簡單的賦值運算符,將一個表達式的值賦給一個左值
+= 相加後再賦值
-= 相減後再賦值
*= 相乘後再賦值
/= 相除後再賦值
%= 求餘後再賦值
<<= 左移後賦值
>>= 右移後賦值
&= 按位與後賦值
^= 按位異或後賦值
\ = 按位或後賦值
(6)其餘運算符
運算符 描述
& 取地址符,返回變量存儲地址
* 取值符,返回指針的變量
特殊標識符 '_'

「_」是特殊標識符,又稱佔位符(空標識符號),用來忽略結果。oop

二、流程控制

(1) IF
  • 條件表達式沒有括號
  • 支持一個初始化表達式(能夠是並行方式)
  • 左大括號必須和條件語句或else在同一行
  • 初始化語句中的變量爲block級別,同時隱藏外部同名變量 (也就是相似java中的就近原則)
func main(
    a:=true
    if a,b,c :=1,2,3;a+b+c>6{
        fmt.Println("大於6")
    }else{
        fmt.Println("小於等於6")
    }
)
(2)For

go語言沒有while,由於for 能夠替代while ,⽀持三種循環⽅式,包括類 while 語法。指針

  • Go只有for一個循環語句關鍵字,但支持3種形式
  • 初始化和步進表達式能夠是多個值
  • 條件語句每次循環都會被從新檢查,所以不建議在條件語句中使用函數,儘可能提早計算好條件並以變量或常量代替
  • 左大括號必須和條件語句在同一行
s := "abc"
for i, n := 0, len(s); i < n; i++ { // 常⻅的 for 循環,⽀持初始化語句能夠多個值。
    println(s[i])
}
n := len(s)
for n > 0 {              // 替代 while (n > 0) {}
    println(s[n])         // 替代 for (; n > 0;) {}
    n--
}
for {                     // 替代 while (true) {}
    println(s)             // 替代 for (;;) {}
}
(3)switch
  • 可使用任何類型或表達式做爲條件語句
  • 不須要寫break,一旦條件符合自動終止
  • 如但願繼續執行下一個case,需使用fallthrough語句
  • 支持一個初始化表達式(能夠是並行方式),右側需跟分號
  • 左大括號必須和條件語句在同一行
func main(){
    a:=1
    switch a{    //方式一
        case 0:
            fmt.Println("111")
        case 1:
            fmt.Println("222")
        default:
            fmt.Println("default")
    }
    switch {    //方式二
        case a>=0:
                fmt.Println("111")
        case a>=1:
            fmt.Println("222")
        default:
            fmt.Println("default")
    }
    switch a:=1;{    //方式三
        case a>=0:
                fmt.Println("111")
        case a>=1:
            fmt.Println("222")
        default:
            fmt.Println("default")
    }
}

三、Goto, Break, Continue

GO 語言支持 goto、break、continue 三種循環控制語句,三個語句均可以配合標籤( label )使用,標籤名區分大小寫,定義後不使用會形成編譯錯誤。code

func main() {
    var i int
for {
    println(i)
    i++
    if i > 2 { goto BREAK }
}
BREAK:
    println("break")
EXIT: // Error: label EXIT defined and not used
}

注意,goto、continue、break語句跳出到標籤,必定要注意標籤的位置,避免死循環。it

注意:goto語句與標籤之間不能有變量聲明,不然編譯錯誤。編譯

func main() {
    fmt.Println("start")
    goto Loop
    var say = "hello oldboy"
    fmt.Println(say)
Loop:
    fmt.Println("end")
}//會引起編譯錯誤

break 語句跳出當前循環。能夠配合標籤使用跳出多層循環。table

continue :跳過當前循環的剩餘語句,而後繼續進行下一輪循環。。也能夠配合標籤跳出多層。class

相關文章
相關標籤/搜索