golang之基礎知識

    package main必須首先出現,緊跟着的是import(引入不是main的其他的包)。在GO中,package總是首先出現的,然後是import,然後是其他的內容。當GO程序開始執行時,首先調用的函數是main.main(),這是從C語言中繼承來的,GO語言是一種類C的語言。示例程序如下:

                     package main
                     import (
                          "fmt"
                             "math/rand"
                     )
                     func main() {
                                 fmt.Println("My favorite number is", rand.Intn(10))
                     }

變量.類型和關鍵字

    1:go支持單條語句一行不需要加分號,如果是兩條語句在一行的話就需要在中間加上分號。

    2:定義變量時是變量名在前變量類型在後面,例如:var  a  int

    3:在函數中也可以直接定義加賦值一條語句搞定,例如: a := 15(變量a賦值爲15, 根據賦值的類型推測變量a爲整型int)。這個語句相當於  var  a  int ;  a = 15;

    4:如果是多個則可以用圓括號包住,放在一起。注意圓括號!在引用(import)多個包時也可以用圓括號。常量同時定義多個也可以用圓括號放在一起。

    var  (

          a  int

          b  bool 

    )

    5:GO的編譯器會對聲明瞭但是沒有使用的變量進行報錯,和C不同。

    6:除了常規的類型以外,go還包含可以明確長度的類型例如int32, unit32, int8, int16, float32,float64等,請注意這些類型都是獨立的,只能這種類型之間進行復制,算術運算如果混用那麼就會引起編譯的錯誤!

   7:枚舉值:用iota生成枚舉值,按順序其值依次遞增。例如:

     const (

         a  = iota

         b = iota

    )

    第一個iota表示0所以a爲0, b爲1,如果在使用iota那麼其值會繼續在原來的基礎上面加1。

    8:字符串:在GO中字符串是由雙引號""包裹的字符序列。如果是單引號包裹的那麼只是一個字符。並且在GO中一旦給變量賦值,字符串就不能修改了,在GO中字符串是不可變的。需要用到中間者進行轉換纔可以。

    9:複數:GO的原生是支持複數的。變量類型是complex128。複數寫爲re + im,其中re是實數, im是虛數。例如如下:

    var a  complex64 =  5 + 5i; fmt.printf("Value  is  :  %v", a);

    打印:5 + 5i (其中%V的含義是用默認的格式去打印這個值)

   

控制結構

    在GO中只有很少的幾個控制結構,沒有do, while, 只有for。有switch和if 語句還有select。語法和C語言相比有所不同:無需圓括號,而且語句必須總是得包含在大括號裏面才行。

    1:if-eles:沒有圓括號,判斷語句緊跟在if的後面,而且第一個大括號{必須和if在同一行,不然程序會自動添加分號出現錯誤。例如:

     if  x > 0 {

        return y;

    } else {

        return x;

    }

    也可以在判斷語句中加入初始化,初始化語句和判斷語句中間用分號隔開即可。其判斷語句和C中一樣,也可以使用邏輯運算符&&, !等。其中的continue, break和return都和C不同,唯一不同是加了一個goto。goto調到一個當前函數定義好的標籤。

    2:for:有下面三種情況

     for  init; condition; post  {    }      //和C的for是一樣的,只不過沒有圓括號

     for   condition {   }    //和while一樣

     for   {   }      //死循環

     注意:GO沒有逗號表達式,所以如果想要執行多個變量,應使用平行賦值。

     3:可以使用break終止當前的循環,並且循環嵌套時,可以在break後面制定標籤,用標籤指定哪個循環被終止。用continue來停止當前的循環進入下一個循環。例如:

      J:  for  j := 0; j < 5; j++ {

                    for  i := 0; i < 4; i++ {

                            if(i  > 5) {

                                  break  J   //現在終止的是j循環,而不是i的那個 

                            }      

                  }

                  println(i)

             }

      4:switch:GO的switch非常靈活,表達式不必是常量或整數,執行的過程從上到下,直到找到匹配項,而如果switch沒有匹配項,那麼它會匹配true。可以用default去匹配其他都不匹配的情況。例如:

      switch  i {

           case  0:

           case 1:

                     f()

               default:

                     g()

      }

     其中的分支可以使用逗號分隔的列表,例如:

     func  shouldEscape(c  byte)  bool  {

         switch(c) {

             case ' ', ', ', '?', '=', '&', '+':                //分支上面的各種情況可以用逗號進行隔開,只要是在:之前

                       return true

         }

             return false

    }


         

      

      

      

        

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章