go基礎入門

卖油条的大叔發表於2024-06-01
  1. go不需要在語句或宣告後面使用分號結尾

    • 左括號{必須與關鍵字func同一行,不能獨自成行

    • x+y表示式,換行符可以在+運算子的後面,不能在+運算子的前面

  2. go中索引使用半開區間,左開右閉,包含左邊索引元素,不包含右邊索引元素。

  3. var關鍵字用來宣告變數,如果沒有明確初始化,會隱式的初始化為這個型別的空值。

    // 前兩種形式很常用 
    s := "" // :=用於短變數宣告
    var s string // 預設初始化為空字串
    var s = "" // 很少使用
    var s string = "" // 顯示的變數型別
    
  4. for是go裡面的唯一迴圈語句。

    // initialization:初始化,在迴圈開始之前執行
    // condition:布林表示式,迴圈迭代開始前判斷,false時跳出迴圈 
    // post:在迴圈體執行後執行
    for initialization; condition; post {
        
    }
    
    // 傳統的無限迴圈
    for {
        
    }
    
    // 迴圈遍歷slice,range產生一對值,索引以及索引對應的值
    for index, value := range slice {
        
    }
    
    // 迴圈遍歷map
    for key, value := range map {
        
    }
    
  5. switch語句

    // case語句從上到下進行推演,第一個匹配的會被執行,後續匹配不會執行。
    // case語句不會貫穿執行,除非使用fallthrough改寫這個行為
    switch 0 {
        case 0:
           fmt.println(0)
        case 1:
           fmt.println(1)
        default:
           fmt.println(-1)
    }
    
    // 執行結果:x>5
    // 無標籤選擇,它等價於switch true
    // default語句可以放在任何地方
    x := 10
    switch {
    case x > 5:
    	fmt.Println("x>5")
    default:
    	fmt.Println("default")
    case x > 0:
    	fmt.Println("x>0")
    }
    
  6. break和continue語句可以改變控制流。break可以打斷for、switch或select的最內層呼叫。continue可以跳過本次內層迴圈開始新的迭代。