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