布爾類型
布爾類型用于表示真假,類型名為bool,只有兩個值true和false,占用一個字節寬度,零值為false
常用操作:
- 邏輯運算:
- 與(&&)
只有左、右表達式結果都為true,運算結果為true
- 或(||)
只要左、右表達式有一個為true,運算結果為true
- 非(!)
右表達式為true,運算結果為false;右表達式為false,運算結果為true
- 關系運算
- 等于(==)
- 不等于(!=)
使用fmt.Printf進行格式化參數輸出,占位符:
- %t
數值類型
整型
Go語言提供了5種有符號、5種無符號、1種指針、1種單字節、1種單個unicode字符(unicode碼點),共13種整數類型,零值均為0
類型名 | 字節寬度 | 說明&取值范圍 |
---|---|---|
int | 與平臺有關,32位系統4字節,64位系統8字節 | 有符號整型 |
uint | 與平臺有關,32位系統4字節,64位系統8字節 | 無符號整形 |
rune | 4字節 | Unicode碼點,取值范圍同uint32 |
int8 | 1字節 | 用8位表示的有符號整型,取值范圍為:[-128, 127] |
int16 | 2字節 | 用16位表示的有符號整型,取值范圍為:[-32768,32767] |
int32 | 4字節 | 用32位表示的有符號整型,取值范圍為:[-2147483648,2147483647] |
int64 | 8字節 | 用64位表示的有符號整型,取值范圍為:[-9223372036854775808,9223372036854775807] |
uint8 | 1字節 | 用8位表示的無符號整型,取值范圍為:[0,255] |
uint16 | 2字節 | 用16位表示的無符號整型,取值范圍為:[0, 65535] |
uint32 | 4字節 | 用32位表示的無符號整型,取值范圍為:[0, 4294967295] |
uint64 | 8字節 | 用64位表示的無符號整型,取值范圍為:[0, 18446744073709551615] |
byte | 1字節 | 字節類型,取值范圍同uint8 |
uintptr | 與平臺有關,32位系統4字節,64位系統8字節 | 指針值的無符號整型 |
字面量:
- 十進制表示法:以10為基數,采用0-9十個數字,逢10進位,例如:10
- 八進制表示法:以8為基數,采用0-7八個數字,逢8進位,使用0開頭表示為八進制表示,例如:010
- 十六進制表示法:以16為基數,采用0-9十個數字和A-F六個字母,逢16進位,使用0X開頭表示為十六進制,例如:0X10
常用操作:
- 算術運算符:+、-、*、/、%、++、--
注意:針對/除數不能為0,且結果依然為整數
- 關系運算符:>、>=、<、<=、==、!=
- 位運算符:&、|、^、<<、>>、&^
對于負整數在計算機中使用補碼進行表示,對應正整數二進制表示取反+1
針對左、右移的右操作數必須為無符號整型
- 賦值運算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
- 類型轉換:
Go不會對自動對數據類型轉換,因此左、右操作數類型必須一致或某個字面量,可通過類型名(數據)的語法將數據轉換為對應類型。需要注意值截斷和值溢出問題
使用fmt.Printf進行格式化參數輸出,占位符:
%b:二進制
%c:字符
-
%d:十進制
%+d表示對正整數帶+符號
%nd表示最小占位n個寬度且右對齊
%-nd表示最小占位n個寬度且左對齊
%0nd表示最小占位n個寬度且右對齊,空字符使用0填充 %o:八進制,%#o帶0的前綴
%x、%X:十六進制,%#x(%#X)帶0x(0X)的前綴
%U: Unicode碼點,%#U帶字符的Unicode碼點
%q:帶單引號的字符
常用包:
- math
- math/rand
浮點型
浮點數用于表示帶小數的數字,Go提供float32和float64兩種浮點類型
字面量:
- 十進制表示法:3.1415926
- 科學記數法:1e-5
常用操作:
- 算術運算符:+、-、*、/、++、--
注意:針對/除數不能為0
- 關系運算符:>、>=、<、<=
浮點型不能進行==或!=比較,可選擇使用兩個浮點數的差在一定區間內則認為相等
- 賦值運算符:=、+=、-=、*=、/=
- 類型轉換:
Go不會對自動對數據類型轉換,因此左、右操作數類型必須一致或某個字面量,可通過類型名(數據)的語法將數據轉換為對應類型。需要注意值截斷和值溢出問題
使用fmt.Printf進行格式化參數輸出,占位符:
-
%f、%F:十進制表示法
%n.mf表示最小占n個寬度并且保留m位小數
%e、%E:科學記數法表示
%g、%G:自動選擇最緊湊的表示方法%e(%E)或%f(%F)
常用包
- math
- math/rand
復數型
Go提供complex64和complex128兩種復數類型,針對complex64復數的實部和虛部均使用float32,針對complex128復數的實部和虛部均使用float64
字面量:
- 十進制表示法:1 + 2i,, i*i = -1, 1為實部,2為虛部
常用函數:
- complex: 工廠函數,通過兩個參數創建一個復數
- real:用于獲取復數的實部
- imag: 用于獲取復數的虛部
常用包
- math/cmplx
字符串類型
Go語言內置了字符串類型,使用string表示
字面量:
- 可解析字符串:通過雙引號(")來創建,不能包含多行,支持特殊字符轉義序列
- 原生字符串:通過反引號(`)來創建,可包含多行,不支持特殊字符轉義序列
特殊字符:
- \\:反斜線
- \':單引號
- \":雙引號
- \a:響鈴
- \b:退格
- \f:換頁
- \n:換行
- \r:回車
- \t:制表符
- \v:垂直制表符
- \ooo:3個8位數字給定的八進制碼點的Unicode字符(不能超過\377)
- \uhhhh:4個16位數字給定的十六進制碼點的Unicode字符
- \Uhhhhhhhh:8個32位數字給定的十六進制碼點的Unicode字符
- \xhh:2個8位數字給定的十六進制碼點的Unicode字符
常用操作
- 字符串連接:+
- 關系運算符:>、>=、<、<=、==、!=
- 賦值運算符:+=
- 索引:s[index],針對只包含ascii字符的字符串
- 切片:s[start:end] ,針對只包含ascii字符的字符串
常用函數
- len:獲取字符串長度(針對只包含ascii字符的字符串)
- string: 將byte或rune數組轉換為字符串
使用fmt.Printf進行格式化參數輸出,占位符: %s
常用包:
- fmt
- strings
- strconv
- unicode
- unicode/utf8
- bytes
- regex
枚舉類型
常使用iota生成器用于初始化一系列相同規則的常量,批量聲明常量的第一個常量使用iota進行賦值,此時iota被重置為0,其他常量省略類型和賦值,在每初始化一個常量則加1
指針類型
每個變量在內存中都有對應存儲位置(內存地址),可以通過&運算符獲取。指針是用來存儲變量地址的變量
- 聲明
指針聲明需要指定存儲地址中對應數據的類型,并使用*作為類型前綴。指針變量聲明后會被初始化為nil,表示空指針
- 初始化
使用&運算符+變量初始化:&運算獲取變量的存儲位置來初始化指針變量
使用new函數初始化:new函數根據數據類型申請內存空間并使用零值填充,并返回申請空間地址
- 操作
可通過*運算符+指針變量名來訪問和修改對應存儲位置的值
- 指針的指針
用來存儲指針變量地址的變量叫做指針的指針