天天看點

Go:保留關鍵字及基本資料類型

1 命名規範

    在Go中幾乎所有的東西都是有名字或辨別符的(類似于C家族語言),且它們是對大小寫敏感的。相應的規則如下:

  • 必須以字元開頭(所有Unicode UTF-8中的字元 或 下劃線“_”)
  • 後面可以跟0或多個字元或數字,如:x56, _x32等。
  • 不能以數字開頭或系統保留關鍵字和操作符。如:1ab, case, a+b。
  • 下劃線"_"本身在Go中是一個特殊的辨別符,稱為空辨別符。可以代表任何其它的辨別符,但是它對應的值會被忽略。是以僅能被作為占位符使用。

    同時,在Go中也支援匿名,如匿名變量、自定類型和函數。

2 系統關鍵字或保留字

    在Go中,為了簡化代碼編譯過程中對代碼的解析,其定義的保留關鍵字隻有25個。詳見如下:

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

    除了保留關鍵字外,外另還提供了36個預定的辨別符,其包括基礎資料類型和系統内嵌函數。

append bool byte cap close complex
complex64 complex128 uint16 copy false float32
float64 imag int int8 int16 uint32
int32 int64 iota len make new
nil panic uint64 print println real
recover string true uint uint8 uintprt

3 内嵌資料類型

  • Boolean類型:
    • 系統為此類型定義了兩個常量:true 和 false.
    • 初始預設值為:false。
    • 格式化輸出時的格式字元串為:%t。
    • 執行個體代碼:
      • Go:保留關鍵字及基本資料類型
    • 輸出結果為:
      • flag1 = true
      • 
!flag1 = false

      • GlobalFlag = true
      • (flag1 && flag2) = false
      • (flag1 || flag2) = true
  • Byte類型:
    • 為uint8的别外,即隻有8個bit。
  • 數字類型:
    • 整數類型:
      • 有符号整數:int8, int16, int32, int64和int(此類型會根據特定的平台可能會有所不同)
      • 無符号整數:uint8, uint16, uint32, uint64和uint (此類型會根據特定的平台可能會有所不同)
      • 初始預設值為:0。
      • 格式化輸出時的格式字元串為:%d,輸出16進制:%x或%X;8進制:%o。
      • 執行個體代碼:
        • Go:保留關鍵字及基本資料類型
      • 輸出結果為:
        • i8=9, i=27, ui32=30, ui64=40, defInt=0
        • 
i8=11, i=1b, ui32=1E, ui64=101000
        • 
The value=27, The Address=0x117d0238
    • 浮點類型:float32 和 float64
      • 初始預設值為:0.0。
      • 注意:這裡沒有float的類型,且兩個浮點數比較時不能使用== 和 !=
      • 格式化輸出時的格式字元串為:%g,%f則對應浮點類型的指針;%e則對應科學計數法辦輸出;%n.mg用于指定小數位輸出。
      • 執行個體代碼:
        • Go:保留關鍵字及基本資料類型
      • 輸出結果:
        • f32 = 2.054545, f64=4.054544925689697, default=0
        • 
f32 = 2.05
    • 複數類型:
      • complex64:實數與虛數都是32位
      • complex128: 實數與虛數都是64位
      • real(c):擷取實數部分
      • imag(c):擷取虛數部分
      • 格式化輸出時的格式字元串為:%v, 另外也可以使用%f輸出實部和虛部。
      • 執行個體代碼:
        • Go:保留關鍵字及基本資料類型
      • 輸出結果:
        • The com1=(2+3i), The com2=(3+4i)
        • The com2=(5+7i)

        • The real of com2=5, The imag of com2=7
  • 字元類型:
    • 嚴格的說,在Go中沒有此類型類型,它是特殊的整數類型。
    • 它對應uint8類型,對傳統的ASCII碼對應,占1byte。
    • 同時也支援Unicode(UTF-8)的編碼,是以它可能點多個byte,被稱為Unicode code points或runes。此時它對應的int32的數字類型。
    • 包含在單引号中。
    • Unicode的字元通常以16進制的形式表示(\u+4或\U+8)
    • 格式化輸出時的格式字元串為:%c;%v或%d則顯示對應的整數值;%U則輸出:U+hhhh
  • 字元串類型:
    • 一串UTF-8編碼格式的字元(可能占1~4byte)---- Java中的字元都是占2bytes。
    • 包含在雙引号中,隻能在獨立的一行内。(Interpreted string)
    • 包含在反引号中,可以跨越多行。(raw string)
    • 注:Go所有的代碼都是UTF-8格式,是以不存在對字元進行編碼和解碼。
    • 它是不可變的值類型,是以不能直接修改字元串。
  • 指針類型:
    • 占4byte大小。
    • 各種資料類型都有對應的指針類型。
    • 聲明方法類似于C中對指針的聲明: *type。

4 操作符

  • 邏輯運算符:
    • 與:&&,或:||,非:!。
    • ==,!=,<,>,<=,>=
  • 位運算符:
    • 隻能工作在int類型的變量上。
    • 按位與:&,按位或:|,按位異或:^
    • 左移:<<,右移:>>。(空位補0)
  • 算術運算符:
    • +,-,*,/。
    • 取模:%
    • 簡化操作:-=,*=, +=, %=
    • ++, --。(隻能在數字變量的後面,不能放在開頭,這是與C,Java不一樣的地方)。
  • 優先級:(7 -> 1:由高到低)
Go:保留關鍵字及基本資料類型