03.手撕Go語言-基本數據類型

布爾類型

布爾類型用于表示真假,類型名為bool,只有兩個值true和false,占用一個字節寬度,零值為false

03.01.png

常用操作:

  1. 邏輯運算:
  • 與(&&)

只有左、右表達式結果都為true,運算結果為true

03.02.png
  • 或(||)

只要左、右表達式有一個為true,運算結果為true

03.03.png
  • 非(!)

右表達式為true,運算結果為false;右表達式為false,運算結果為true

03.04.png
  1. 關系運算
  • 等于(==)
  • 不等于(!=)
03.05.png

使用fmt.Printf進行格式化參數輸出,占位符:

  • %t
03.06.png

數值類型

整型

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
03.07.png

常用操作:

03.08.png
  1. 算術運算符:+、-、*、/、%、++、--

注意:針對/除數不能為0,且結果依然為整數

03.09.png
  1. 關系運算符:>、>=、<、<=、==、!=
03.10.png
  1. 位運算符:&、|、^、<<、>>、&^

對于負整數在計算機中使用補碼進行表示,對應正整數二進制表示取反+1

針對左、右移的右操作數必須為無符號整型

03.11.png
  1. 賦值運算符:=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=
03.12.png
  1. 類型轉換:

Go不會對自動對數據類型轉換,因此左、右操作數類型必須一致或某個字面量,可通過類型名(數據)的語法將數據轉換為對應類型。需要注意值截斷和值溢出問題

03.13.png

使用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:帶單引號的字符

03.14.png

常用包:

  • math
  • math/rand

浮點型

浮點數用于表示帶小數的數字,Go提供float32和float64兩種浮點類型

字面量:

  • 十進制表示法:3.1415926
  • 科學記數法:1e-5
03.15.png

常用操作:

  1. 算術運算符:+、-、*、/、++、--

注意:針對/除數不能為0

03.16.png
  1. 關系運算符:>、>=、<、<=

浮點型不能進行==或!=比較,可選擇使用兩個浮點數的差在一定區間內則認為相等

03.17.png
  1. 賦值運算符:=、+=、-=、*=、/=
03.18.png
  1. 類型轉換:

Go不會對自動對數據類型轉換,因此左、右操作數類型必須一致或某個字面量,可通過類型名(數據)的語法將數據轉換為對應類型。需要注意值截斷和值溢出問題

03.19.png

使用fmt.Printf進行格式化參數輸出,占位符:

  • %f、%F:十進制表示法

    %n.mf表示最小占n個寬度并且保留m位小數

  • %e、%E:科學記數法表示

  • %g、%G:自動選擇最緊湊的表示方法%e(%E)或%f(%F)

03.20.png

常用包

  • math
  • math/rand

復數型

Go提供complex64和complex128兩種復數類型,針對complex64復數的實部和虛部均使用float32,針對complex128復數的實部和虛部均使用float64

字面量:

  • 十進制表示法:1 + 2i,, i*i = -1, 1為實部,2為虛部

常用函數:

  • complex: 工廠函數,通過兩個參數創建一個復數
  • real:用于獲取復數的實部
  • imag: 用于獲取復數的虛部
03.21.png

常用包

  • 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字符
03.22.png

常用操作

  1. 字符串連接:+
  2. 關系運算符:>、>=、<、<=、==、!=
  3. 賦值運算符:+=
  4. 索引:s[index],針對只包含ascii字符的字符串
  5. 切片:s[start:end] ,針對只包含ascii字符的字符串
03.23.png

常用函數

  • len:獲取字符串長度(針對只包含ascii字符的字符串)
  • string: 將byte或rune數組轉換為字符串

使用fmt.Printf進行格式化參數輸出,占位符: %s

03.24.png

常用包:

  • fmt
  • strings
  • strconv
  • unicode
  • unicode/utf8
  • bytes
  • regex

枚舉類型

常使用iota生成器用于初始化一系列相同規則的常量,批量聲明常量的第一個常量使用iota進行賦值,此時iota被重置為0,其他常量省略類型和賦值,在每初始化一個常量則加1

03.25.png

指針類型

每個變量在內存中都有對應存儲位置(內存地址),可以通過&運算符獲取。指針是用來存儲變量地址的變量

  1. 聲明

指針聲明需要指定存儲地址中對應數據的類型,并使用*作為類型前綴。指針變量聲明后會被初始化為nil,表示空指針

03.26.png
  1. 初始化
  • 使用&運算符+變量初始化:&運算獲取變量的存儲位置來初始化指針變量

  • 使用new函數初始化:new函數根據數據類型申請內存空間并使用零值填充,并返回申請空間地址

03.27.png
  1. 操作

可通過*運算符+指針變量名來訪問和修改對應存儲位置的值

03.28.png
03.29.png
  1. 指針的指針

用來存儲指針變量地址的變量叫做指針的指針

03.30.png

歡迎添加公眾號【扯淡er】學習交流

扯淡er
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,344評論 1 27
  • 指針是C語言中廣泛使用的一種數據類型。 運用指針編程是C語言最主要的風格之一。利用指針變量可以表示各種數據結構; ...
    朱森閱讀 3,464評論 3 44
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,532評論 1 51
  • 版權聲明:本文為 gfson 原創文章,轉載請注明出處。注:作者水平有限,文中如有不恰當之處,請予以指正,萬分感謝...
    gfson閱讀 3,113評論 0 6
  • 下巴長閉合性粉刺,角質層過厚,油脂分泌過多引起的,與內分泌和生活習慣有一定的關系,下巴經常長的粉刺就是白頭粉刺也叫...
    護膚雪莉閱讀 8,280評論 2 0