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。
- 實例代碼:
- 輸出結果爲:
- flag1 = true
-
!flag1 = false
- GlobalFlag = true
- (flag1
&& flag2) = false
- (flag1
|| flag2) = true
- flag1 = true
- Byte類型:
- 爲uint8的別外,即只有8個bit。
- 數字類型:
- 整數類型:
- 有符號整數:int8, int16, int32, int64和int(此類型會根據特定的平臺可能會有所不同)
- 無符號整數:uint8, uint16, uint32, uint64和uint (此類型會根據特定的平臺可能會有所不同)
- 初始默認值爲:0。
- 格式化輸出時的格式字符串爲:%d,輸出16進制:%x或%X;8進制:%o。
- 實例代碼:
- 輸出結果爲:
- i8=9, i=27, ui32=30, ui64=40, defInt=0
-
i8=11, i=1b, ui32=1E, ui64=101000
-
The value=27, The Address=0x117d0238
- i8=9, i=27, ui32=30, ui64=40, defInt=0
- 浮點類型:float32 和 float64
- 初始默認值爲:0.0。
- 注意:這裏沒有float的類型,且兩個浮點數比較時不能使用== 和 !=
- 格式化輸出時的格式字符串爲:%g,%f則對應浮點類型的指針;%e則對應科學計數法辦輸出;%n.mg用於指定小數位輸出。
- 實例代碼:
- 輸出結果:
- f32 = 2.054545, f64=4.054544925689697, default=0
-
f32 = 2.05
- f32 = 2.054545, f64=4.054544925689697, default=0
- 複數類型:
- complex64:實數與虛數都是32位
- complex128: 實數與虛數都是64位
- real(c):獲取實數部分
- imag(c):獲取虛數部分
- 格式化輸出時的格式字符串爲:%v, 另外也可以使用%f輸出實部和虛部。
- 實例代碼:
- 輸出結果:
- The com1=(2+3i), The com2=(3+4i)
- The com2=(5+7i)
- The real of com2=5, The imag of com2=7
- The com1=(2+3i), The com2=(3+4i)
- 整數類型:
- 字符類型:
- 嚴格的說,在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:由高到低)