Go核心語(yǔ)言編程 - 基本數(shù)據(jù)類(lèi)型(2)

Go是一種強(qiáng)類(lèi)型的靜態(tài)編譯語(yǔ)言
Go語(yǔ)言內(nèi)置了七類(lèi)基本數(shù)據(jù)類(lèi)型
? 布爾類(lèi)型:bool

var ok bool = true
var ok bool = 1 //error 1是整型字面量

? 整型:byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr

var a int = 1
var b int32 = 2
b = a //error 不同類(lèi)型的整型必須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換

? 浮點(diǎn)型:float32 float64

var b := 10.00 //浮點(diǎn)數(shù)字面量被自動(dòng)推斷為float64類(lèi)型

? 復(fù)數(shù):complex64 complex128
complex64是由兩個(gè)float32構(gòu)成的,complex128是由兩個(gè)float64構(gòu)成的

var value1 complex64 = 3.1 + 5i
value2 := 3.1 + 6.i
var v = complex(2.1, 3) //構(gòu)造一個(gè)復(fù)數(shù)
a := real(v) //返回實(shí)數(shù)部分
b := image(v) //返回復(fù)數(shù)虛部

? 字符串:string
? 字符串是常量,可以通過(guò)索引訪問(wèn)字節(jié)單元,但是不能修改

var a = "hello world"
b := a[0]
a[1] = 'b' //error

? 字符串轉(zhuǎn)換成[]bytes要慎用,當(dāng)字符串太大的時(shí)候,要復(fù)制一份內(nèi)存

a := "hello, world"
b := []byte(a)

? 字符串尾部不包含NULL字符,跟C和C++不一樣
? 字符串類(lèi)型底層實(shí)現(xiàn)是一個(gè)二元的數(shù)據(jù)結(jié)構(gòu),一個(gè)指針指向字節(jié)數(shù)組的起點(diǎn),另一個(gè)是長(zhǎng)度

// runtime/string.go
type stringStruct struct {
    str unsafe.Pointer
    len int
}

? 基于字符串創(chuàng)建的切片和原字符串指向的相同的底層字符數(shù)組(視圖),一樣不能修改,對(duì)于字符串切片操作返回的子串仍然是string,而非slice

a := "hello world"
b := a[0:4]
c := a[1:]

? 字符串可以轉(zhuǎn)換成字節(jié)數(shù)組,也可以轉(zhuǎn)換成Unicode的字節(jié)數(shù)組

a := "hello world"
b := []byte(a)
c := []rune(a) //轉(zhuǎn)成Unicode的字節(jié)數(shù)組

? 字符串的運(yùn)算

a := "hello"
b := "world"
c := a + b
len(a)

? rune類(lèi)型
Go內(nèi)置兩種字符類(lèi)型,一種byte的字節(jié)類(lèi)型(byte是uint的別名),另一種是標(biāo)識(shí)Unicode編碼的字符rune,rune在Go內(nèi)部是int32類(lèi)型的別名,占用4個(gè)字節(jié),Go語(yǔ)言默認(rèn)是Utf-8類(lèi)型

參考<<Go語(yǔ)言核心編程>>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • nil 是 interface、function、pointer、map、slice 和 channel 類(lèi)型變量...
    宋song一閱讀 4,456評(píng)論 0 0
  • 布爾類(lèi)型 布爾類(lèi)型用于表示真假,類(lèi)型名為bool,只有兩個(gè)值true和false,占用一個(gè)字節(jié)寬度,零值為fals...
    imsilence閱讀 610評(píng)論 0 0
  • Go基本數(shù)據(jù)類(lèi)型 Go語(yǔ)言中有豐富的數(shù)據(jù)類(lèi)型,除了基本的整型、浮點(diǎn)型、布爾型、字符串外,還有數(shù)組、切片、結(jié)構(gòu)體、函...
    付少_Flj閱讀 414評(píng)論 0 1
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,788評(píng)論 16 22
  • 創(chuàng)業(yè)是很多人的夢(mèng)想,多少人為了理想和不甘選擇了創(chuàng)業(yè)來(lái)實(shí)現(xiàn)自我價(jià)值,我就是其中一個(gè)。 創(chuàng)業(yè)后,我由女人變成了超人,什...
    亦寶寶閱讀 1,982評(píng)論 4 1

友情鏈接更多精彩內(nèi)容