golang 的數(shù)據(jù)類型

在本節(jié)之后,我們將正式學(xué)習(xí) golang 語言基礎(chǔ)蒙谓。本節(jié),我們將介紹 “golang 數(shù)據(jù)類型”训桶,如果你還沒閱讀過之前的文章內(nèi)容累驮,可以打開以下鏈接進行閱讀

  1. 怎樣搭建golang開發(fā)環(huán)境 - 簡書 (jianshu.com)
  2. golang開發(fā)中包的使用 - 簡書 (jianshu.com)

一、數(shù)據(jù)類型的分類

數(shù)據(jù)類型的出現(xiàn)是為了把數(shù)據(jù)分成所需內(nèi)存大小不同的數(shù)據(jù)舵揭,編程的時候需要用大數(shù)據(jù)的時候才需要申請大內(nèi)存谤专,就可以充分利用內(nèi)存。


1. 數(shù)據(jù)類別

golang 數(shù)據(jù)類型 按數(shù)據(jù)類別有以下幾種數(shù)據(jù)類型:

  • 布爾型: 布爾型的值只可以是常量 true 或者 false午绳。一個簡單的例子:var b bool = true置侍。
  • 數(shù)字類型: 整型 int 和浮點型 float32、float64拦焚,Go 語言支持整型和浮點型數(shù)字蜡坊,并且支持復(fù)數(shù),其中位的運算采用補碼赎败。
  • 字符串類型: 字符串就是一串固定長度的字符連接起來的字符序列秕衙。Go 的字符串是由單個字節(jié)連接起來的。Go 語言的字符串的字節(jié)使用 UTF-8 編碼標(biāo)識 Unicode 文本僵刮。
  • 派生類型: 包括:(a) 指針類型(Pointer)(b) 數(shù)組類型(c) 結(jié)構(gòu)化類型(struct)(d) Channel 類型(e) 函數(shù)類型(f) 切片類型(g) 接口類型(interface)(h) Map 類型灾梦。

2.存儲方式

golang 數(shù)據(jù)類型按存儲方式 有兩大類數(shù)據(jù)類型:

  1. 值類型,也叫基本數(shù)據(jù)類型:數(shù)值類型妓笙、bool若河、string、數(shù)組寞宫、struct 結(jié)構(gòu)體
  2. 引用數(shù)據(jù)類型:指針萧福、slice 切片、管道 chan辈赋、map鲫忍、以及 interface

值類型:變量直接存儲值。值類型的數(shù)據(jù)存儲在棧內(nèi)存空間中钥屈,棧在函數(shù)調(diào)用完內(nèi)存會被釋放悟民。
引用類型:變量存儲的是一個地址,這個地址存儲最終的值篷就。引用數(shù)據(jù)類型的數(shù)據(jù)存儲在堆內(nèi)存空間中射亏,通過 GC 回收。

二、常用數(shù)據(jù)類型

1. bool 類型

golang 中以bool關(guān)鍵字聲明布爾類型數(shù)據(jù)智润,布爾型的值只可以是true 或者 false及舍。代表條件成立(真)或條件不成立(假),以下一個簡單的例子:

var b bool = true
  • 布爾類型變量的默認值為 false

  • golang 中不允許將整型強制轉(zhuǎn)換為布爾型

  • 布爾型無法參與數(shù)值運算窟绷,也無法與其他類型進行轉(zhuǎn)換

2. 數(shù)字類型

(1)整型

整型主要有 int 锯玛、int16、int32兼蜈、int64攘残、uint、uint8为狸、uint16肯腕、uint32、uint64钥平。如下表格

  • uint8: 無符號 8 位整型 (0 到 255)
  • uint16: 無符號 16 位整型 (0 到 65535)
  • uint32: 無符號 32 位整型 (0 到 4294967295)
  • uint64: 無符號 64 位整型 (0 到 18446744073709551615)
  • int8: 有符號 8 位整型 (-128 到 127)
  • int16: 有符號 16 位整型 (-32768 到 32767)
  • int32: 有符號 32 位整型 (-2147483648 到 2147483647)
  • int64: 有符號 64 位整型 (-9223372036854775808 到 9223372036854775807)

Go 語言的 int/uint 類型实撒,是不可移植的類型,其長度根據(jù)宿主機的機器字長決定涉瘾。int, uintuintptr 在 32 位系統(tǒng)上通常為 32 位寬知态,在 64 位系統(tǒng)上則為 64 位寬。

(2)浮點型

浮點數(shù)類型主要有 float32立叛、float64负敏、complex64、complex128

  • float32: IEEE-754 32 位浮點型數(shù)
  • float64: IEEE-754 64 位浮點型數(shù)
  • complex64: 32 位實數(shù)和虛數(shù)
  • complex128: 64 位實數(shù)和虛數(shù)

(3)其他數(shù)字類型

以下列出了其他更多的數(shù)字類型:

  • byte :類似 uint8秘蛇,代表了 ASCII 碼的一個字符其做,也可以說是 ASCII 字符類型
  • rune : 類似 int32,表示一個 Unicode 碼點
  • uintptr: 無符號整型赁还,用于存放一個指針

UTF-8 是 Unicode 的實現(xiàn)方式之一妖泄。UTF-8 最大的一個特點,就是它是一種變長的編碼方式艘策。它可以使用 1~4 個字節(jié)表示一個符號蹈胡,根據(jù)不同的符號而變化字節(jié)長度。

(4)類型強轉(zhuǎn)

golang 中只有強制類型轉(zhuǎn)換朋蔫,沒有隱式類型轉(zhuǎn)換罚渐。該語法只能在兩個類型之間支持相互轉(zhuǎn)換的時候使用。

強制類型轉(zhuǎn)換的基本語法為:type(variable)驯妄,可轉(zhuǎn)換的數(shù)據(jù)包括變量荷并、表達式、函數(shù)返回值等青扔。如下代碼

var a int = 8
// 將int類型改為int32類型
var b int32 = int32(a)

3. 字符串類型

字符串定義:var str string
字符串有兩種表示方式:雙引號("")源织;反引號翩伪,也叫原意符號(``),如下代碼

package main

import "fmt"

func main() {
    var str1 = "hello world"
    var str2 = `
    窗前明月光
    疑是地上霜
    舉頭望明月
    低頭思故鄉(xiāng)
    `

    fmt.Println("str1 = ", str1)
    fmt.Println("str2 = ", str2)
}

運行結(jié)果如下

pan@pandeMBP src % go run learn/test4
str1 =  hello world
str2 =
        窗前明月光
        疑是地上霜
        舉頭望明月
        低頭思故鄉(xiāng)

pan@pandeMBP src %

三雀鹃、總結(jié)

本節(jié),我們介紹了 golang 數(shù)據(jù)類型的分類励两,以及介紹了常用的幾種數(shù)據(jù)類型黎茎。在后面的章節(jié)中,我們將更深入地學(xué)習(xí)和使用各種數(shù)據(jù)類型当悔。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末傅瞻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盲憎,更是在濱河造成了極大的恐慌嗅骄,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饼疙,死亡現(xiàn)場離奇詭異溺森,居然都是意外死亡,警方通過查閱死者的電腦和手機窑眯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門屏积,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人磅甩,你說我怎么就攤上這事炊林。” “怎么了卷要?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵渣聚,是天一觀的道長。 經(jīng)常有香客問我僧叉,道長奕枝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任瓶堕,我火速辦了婚禮倍权,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捞烟。我一直安慰自己薄声,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布题画。 她就那樣靜靜地躺著默辨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苍息。 梳的紋絲不亂的頭發(fā)上缩幸,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天壹置,我揣著相機與錄音,去河邊找鬼表谊。 笑死钞护,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爆办。 我是一名探鬼主播难咕,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼距辆!你這毒婦竟也來了余佃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤跨算,失蹤者是張志新(化名)和其女友劉穎爆土,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诸蚕,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡步势,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了背犯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片立润。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖媳板,靈堂內(nèi)的尸體忽然破棺而出桑腮,到底是詐尸還是另有隱情,我是刑警寧澤蛉幸,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布破讨,位于F島的核電站,受9級特大地震影響奕纫,放射性物質(zhì)發(fā)生泄漏提陶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一匹层、第九天 我趴在偏房一處隱蔽的房頂上張望隙笆。 院中可真熱鬧,春花似錦升筏、人聲如沸撑柔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铅忿。三九已至,卻和暖如春灵汪,著一層夾襖步出監(jiān)牢的瞬間檀训,已是汗流浹背柑潦。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留峻凫,地道東北人渗鬼。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像荧琼,于是被迫代替她去往敵國和親譬胎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 總目錄:http://www.reibang.com/p/e406a9bc93a9 Golang - 子目錄:h...
    寒暄_HX閱讀 269評論 0 0
  • 分類 Go語言中的數(shù)據(jù)類型分為:基本數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型 基本數(shù)據(jù)類型 整型铭腕、浮點型银择、布爾型多糠、字符串 復(fù)合數(shù)據(jù)類...
    learninginto閱讀 308評論 0 5
  • Go 語言數(shù)據(jù)類型包含基礎(chǔ)類型和復(fù)合類型兩大類累舷。基礎(chǔ)數(shù)據(jù)類型包括:布爾型夹孔、整型被盈、浮點型、復(fù)數(shù)型搭伤、字符型只怎、字符串型、...
    野塵lxw閱讀 10,039評論 2 5
  • 基本數(shù)據(jù)類型 整型: 1.按長度:int8(-128-127)怜俐、int16身堡、int32、int64 2.無符號整型...
    lghCode閱讀 297評論 0 0
  • A 基本數(shù)據(jù)類型 1 布爾類型 bool 1)Go 對于值之間的比較有非常嚴(yán)格的限制拍鲤,只有兩個類型相同的值才可以進...
    風(fēng)再起時ME閱讀 559評論 0 1