生活随笔
收集整理的這篇文章主要介紹了
《Go程序设计语言》- 第3章:基本数据
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 前言
- 章節(jié)開篇知識
- 整數(shù)
- 浮點(diǎn)數(shù)
- 復(fù)數(shù)
- 布爾值
- 字符串
- 常量
前言
本專欄是筆者在學(xué)習(xí)《Go程序設(shè)計語言》這本書時,對每個章節(jié)認(rèn)為較為重要(容易忘記👻)的知識點(diǎn)記錄的筆記,其中也會有少量的思考👀, 現(xiàn)整理成博客分享出來。
??注意??:本專欄不是詳細(xì)的知識講解,只是碎片的知識條目,或可作為Go知識點(diǎn)查漏補(bǔ)缺的小工具~
章節(jié)開篇知識
Go有四大數(shù)據(jù)類型:基礎(chǔ)類型、聚合類型、引用類型、接口類型;基礎(chǔ)類型包括數(shù)字,字符串,布爾型;聚合類型包括數(shù)組和結(jié)構(gòu)體;引用類型包括函數(shù)、map、channel、slice、指針;
整數(shù)
整數(shù)有8,16,32,64位有無符號,加上不指定大小的int/uint,以及rune(int32)、byte(uint8)、uintptr;
int/uint是平臺上運(yùn)算效率最高的值,二者大小相同,都是32或64位,但這取決于編譯器;
rune用來存放Unicode編碼,byte用來存放字節(jié),uintptr大小不明確,但足以存放完整指針,僅用于底層編程;
Go語言取模余數(shù)的符號總是與被除數(shù)一致;整數(shù)除法舍棄小數(shù)部分;溢出時無提示丟棄高位溢出部分;
位運(yùn)算符:& | ^ &^;&^是位清空運(yùn)算符;^作為二元運(yùn)算符時是位異或,一元運(yùn)算符時是位取反;
%08b用來輸出8位二進(jìn)制數(shù)據(jù);
位移運(yùn)算符<<和>>注意:>>會按照符號位來填補(bǔ)空位,即負(fù)數(shù)補(bǔ)1正數(shù)補(bǔ)0;如int8類型的-9>>1 == -5:
var a int8 = -9
b := a >> 1
為什么len()函數(shù)返回有符號整數(shù)?這樣才能倒序遍歷,否則i >= 0將恒成立;
浮點(diǎn)型轉(zhuǎn)整數(shù)將趨零截尾;
如果轉(zhuǎn)換超出了目標(biāo)類型的取值范圍,其行為依賴具體實(shí)現(xiàn);應(yīng)盡量避免這種轉(zhuǎn)換;
浮點(diǎn)數(shù)
兩種浮點(diǎn)數(shù):float32和float64;math包給出了極限值math.MaxFloat32;十進(jìn)制下:float32有效數(shù)字約6位,float64有效數(shù)字約15位;%g占位符可以選擇%e %f中更緊湊的打印方式;與math.NaN()的比較總是不成立;
復(fù)數(shù)
兩種復(fù)數(shù):complex64和complex128,分別由兩種浮點(diǎn)數(shù)構(gòu)成;通過內(nèi)置complex()函數(shù)創(chuàng)建復(fù)數(shù),通過real() imag()函數(shù)提取復(fù)數(shù)的實(shí)部和虛部;在十進(jìn)制整數(shù)/浮點(diǎn)數(shù)后面接i就變成了復(fù)數(shù),此時實(shí)部為0;
布爾值
&& ||運(yùn)算符可能短路;布爾值無法隱式轉(zhuǎn)換成數(shù)值0或1;
字符串
字符串是不可變的字節(jié)序列,所以s[0] = 'A'會編譯錯誤;len()函數(shù)返回字節(jié)數(shù)而不是字符數(shù);Go源文件按照UTF-8編碼;UTF-8每個字符占1~4字節(jié),unicode/utf8包提供了相關(guān)接口;UTF-32或UCS-4每個Unicode碼點(diǎn)占32位;原生字符串字面量的書寫形式是反引號;其中轉(zhuǎn)義序列不起作用,實(shí)質(zhì)內(nèi)容與字面寫法嚴(yán)格一致;唯一處理是回車符將被刪除(換行符會被保留);原生字面量適用于HTML模板、JSON字符串、命令行提示信息等;字符串字面量可以表示UTF-8字符:\uhhhh表示16位碼點(diǎn)值,\Uhhhhhhhh表示32位碼點(diǎn)值;注意后者是大寫的U;range循環(huán)對于字符串隱式采用UTF-8解碼,utf8.RuneCountInStrings(s)可以得到字符串中UTF-8字符的數(shù)量;len(s)得到的是byte的數(shù)量;C++中的std::string::size()獲取的也是char的數(shù)量;如果UTF-8解碼器讀入一個不合理字節(jié),都會產(chǎn)生一個\uFFFD替換它;可以使用[]rune轉(zhuǎn)換UTF-8字符串,獲取Unicode碼點(diǎn)序列;處理字符串的標(biāo)準(zhǔn)包:strings, bytes, strconv, unicode;增量創(chuàng)建字符串,推薦采用bytes.Buffer;處理文件路徑:path/filepath;[]bytes(str)與string(b)轉(zhuǎn)換時,會復(fù)制一份以保證原串不變;整數(shù)轉(zhuǎn)字符串:strconv.Itoa():integer to ascii;或者fmt.Sprintf();字符串轉(zhuǎn)整數(shù)可以strconv.ParseInt();
常量
常量是一種表達(dá)式,保證在編譯階段就確定值;所有常量本質(zhì)上都屬于基本類型:布爾、字符串、數(shù)字;可以聲明一系列常量,通過const (),在括號中聲明;如果聲明a,b,c,只對a賦值如4,則b,c均為4;iota遞增常量,從0開始取值,逐項加1;iota可用于表達(dá)式,如1 << iota,iota + 100等;無類型常量的算術(shù)精度可達(dá)到256位,聲明無類型常量:const a = 1.11111111;只有常量才能聲明成無類型;
如有錯誤 ? ,歡迎指正 ??~
如有收獲 🍗,可以考慮點(diǎn)贊👍/評論💬/收藏??/關(guān)注👀,大家共同進(jìn)步~
總結(jié)
以上是生活随笔為你收集整理的《Go程序设计语言》- 第3章:基本数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。