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 | 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:保留關鍵字及基本資料類型