一凉逛、基本數(shù)據(jù)類型
unsafe.Sizeof()
查看不同長(zhǎng)度的整型在內(nèi)存中的存儲(chǔ)空間。
類型轉(zhuǎn)換矢洲,高位向低位轉(zhuǎn)換要注意溢出绣檬。
數(shù)字字面量語(yǔ)法足陨。
64 位系統(tǒng)中 Go 語(yǔ)言中浮點(diǎn)數(shù)默認(rèn)是 float64嫂粟。
二娇未、Golang 中 float 精度丟失問題
利用第三方包:github.com/shopspring/decimal
bool
類型變量的默認(rèn)值為 false。
Go 語(yǔ)言不允許將整型強(qiáng)制轉(zhuǎn)換為布爾型星虹,布爾型無法參與數(shù)值運(yùn)算零抬,也無法與其他類型進(jìn)行轉(zhuǎn)換。
三宽涌、字符串
轉(zhuǎn)義字符
-
\n
表示換行 -
\\
表示輸出\
多行字符串
- 使用反引號(hào) ` 表示多行平夜。
一個(gè)漢字占用三個(gè)字節(jié)。
+
可以拼接字符串卸亮,如有多行拼接忽妒,則 +
寫在右邊,Sprintf
可以拼接字符串賦值給一個(gè)變量兼贸。
Split
分割字符串段直,參數(shù):第一個(gè)是拆分字符串,第二個(gè)是以什么分隔符進(jìn)行拆分溶诞。
Join
把切片鏈接成字符串鸯檬,參數(shù):第一個(gè)是切片數(shù)組,第二個(gè)是以什么鏈接符進(jìn)行鏈接螺垢。
Index
是返回下標(biāo)位置喧务,查找不到返回 -1赖歌。
四、byte 和 rune 類型
Golang 中定義字符為 int 類型功茴,直接輸出 byte 的時(shí)候輸出的是這個(gè)字符對(duì)應(yīng)的 ASCII 值庐冯。
Golang 中漢字是使用 UTF-8 編碼,Unicode 編碼后對(duì)應(yīng)的十進(jìn)制值是 int 類型坎穿。每個(gè)漢字占三個(gè)字節(jié)肄扎,每個(gè)字母占一個(gè)字節(jié)。
unsafe.Sizeof()
不能查看 string 類型數(shù)據(jù)所占用的存儲(chǔ)空間赁酝。
循環(huán)輸出字符串中的字符
- byte:不能正確輸出漢字
- rune:能正確輸出漢字
修改字符串
如果有漢字犯祠,需要通過 rune
將 string 強(qiáng)制類型轉(zhuǎn)換成 rune
,輸出的時(shí)候再轉(zhuǎn)換成 string酌呆。
五衡载、類型轉(zhuǎn)換
建議從低位轉(zhuǎn)換成高位。
六隙袁、算數(shù)運(yùn)算符
Golang 中數(shù)值型不能直接轉(zhuǎn)換成 bool 型痰娱,bool 型也不能直接轉(zhuǎn)換成數(shù)值型。
自增 ++
和自減 --
不是 Golang 中的算數(shù)運(yùn)算符菩收,屬于單獨(dú)語(yǔ)句梨睁。
Golang 中 ++
和 --
只能單獨(dú)使用,不能賦值娜饵。Golang 中 ++
和 --
只能寫在后面坡贺,不能寫在前面。
取余:余數(shù) = 被除數(shù) - (被除數(shù) / 除數(shù)) * 除數(shù)
練習(xí)
交換兩個(gè)變量的值:
- 用中間變量:tmp = a, a = b, b = tmp
- 不能使用中間變量:a = a + b, b = a - b, a = a - b
七箱舞、位運(yùn)算
左移 n 位:乘以 2 的 n 次方
右移 n 位:除以 2 的 n 次方