go--基本数据类型
整形
整型分為以下兩個(gè)大類(lèi): 按長(zhǎng)度分為:int8、int16、int32、int64 對(duì)應(yīng)的無(wú)符號(hào)整型:uint8、uint16、uint32、uint64
其中,uint8就是我們熟知的byte型,int16對(duì)應(yīng)C語(yǔ)言中的short型,int64對(duì)應(yīng)C語(yǔ)言中的long型。
八進(jìn)制和十六進(jìn)組織
func main(){// 十進(jìn)制var a int = 10fmt.Printf("%d \n", a) // 10fmt.Printf("%b \n", a) // 1010 占位符%b表示二進(jìn)制// 八進(jìn)制 以0開(kāi)頭var b int = 077fmt.Printf("%o \n", b) // 77// 十六進(jìn)制 以0x開(kāi)頭var c int = 0xfffmt.Printf("%x \n", c) // fffmt.Printf("%X \n", c) // FF// 變量的內(nèi)存地址fmt.Printf("%p \n", &a) // 0xc00004c080 占位符%p表示十六進(jìn)制的內(nèi)存地址浮點(diǎn)型
Go語(yǔ)言支持兩種浮點(diǎn)型數(shù):float32和float64。
func main() {fmt.Printf("%f\n", math.Pi)fmt.Printf("%.2f\n", math.Pi) }布爾型
Go語(yǔ)言中以bool類(lèi)型進(jìn)行聲明布爾型數(shù)據(jù),布爾型數(shù)據(jù)只有true(真)和false(假)兩個(gè)值。
注意: 1. 布爾類(lèi)型變量的默認(rèn)值為false。 2. Go 語(yǔ)言中不允許將整型強(qiáng)制轉(zhuǎn)換為布爾型. 3. 布爾型無(wú)法參與數(shù)值運(yùn)算,也無(wú)法與其他類(lèi)型進(jìn)行轉(zhuǎn)換。
字符串
Go 語(yǔ)言里的字符串的內(nèi)部實(shí)現(xiàn)使用UTF-8編碼。 字符串的值為雙引號(hào)(")中的內(nèi)容。
注意:在go中,''單引號(hào)中存放的是單個(gè)的字符,而不是字符串。
字符串常用函數(shù)
- len():求字符串長(zhǎng)度。
- +或fmt.Sprintf:拼接字符串。
- strings.Split:分割字符串
- strings.contains:判斷是否包含
- strings.HasPrefix,strings.HasSuffix:前綴/后綴判斷
- strings.Index(),strings.LastIndex():子串出現(xiàn)的位置
- strings.Join(a[]string, sep string):join操作
byte和rune類(lèi)型
組成每個(gè)字符串的元素叫做“字符”,可以通過(guò)遍歷或者單個(gè)獲取字符串元素獲得字符。 字符用單引號(hào)(’)包裹起來(lái)。
Go 語(yǔ)言的字符有以下兩種: 1. uint8類(lèi)型,或者叫 byte 型,代表了ASCII碼的一個(gè)字符。 2. rune類(lèi)型,代表一個(gè) UTF-8字符。
當(dāng)需要處理中文、日文或者其他復(fù)合字符時(shí),則需要用到rune類(lèi)型。rune類(lèi)型實(shí)際是一個(gè)int32。
Go 使用了特殊的 rune 類(lèi)型來(lái)處理 Unicode,讓基于 Unicode 的文本處理更為方便,也可以使用 byte 型進(jìn)行默認(rèn)字符串處理,性能和擴(kuò)展性都有照顧。
// 遍歷字符串 func traversalString() {s := "hello沙河"for i := 0; i < len(s); i++ { //bytefmt.Printf("%v(%c) ", s[i], s[i])}fmt.Println()for _, r := range s { //runefmt.Printf("%v(%c) ", r, r)}fmt.Println() }// 結(jié)果為 104(h) 101(e) 108(l) 108(l) 111(o) 230(?) 178(2) 153() 230(?) 178(2) 179(3) 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(河)修改字符串
要修改字符串,需要先將其轉(zhuǎn)換成[]rune或[]byte,完成后再轉(zhuǎn)換為string。無(wú)論哪種轉(zhuǎn)換,都會(huì)重新分配內(nèi)存,并復(fù)制字節(jié)數(shù)組。
func changeString() {s1 := "big"// 強(qiáng)制類(lèi)型轉(zhuǎn)換byteS1 := []byte(s1)byteS1[0] = 'p'fmt.Println(string(byteS1))s2 := "白蘿卜"runeS2 := []rune(s2)runeS2[0] = '紅'fmt.Println(string(runeS2)) }強(qiáng)制類(lèi)型轉(zhuǎn)換
Go語(yǔ)言中只有強(qiáng)制類(lèi)型轉(zhuǎn)換,沒(méi)有隱式類(lèi)型轉(zhuǎn)換。 基本語(yǔ)法:T(表達(dá)式)。
其中,T表示要轉(zhuǎn)換的類(lèi)型。表達(dá)式包括變量、復(fù)雜算子和函數(shù)返回值等. 比如計(jì)算直角三角形的斜邊長(zhǎng)。
func sqrtDemo() {var a, b = 3, 4var c int// math.Sqrt()接收的參數(shù)是float64類(lèi)型,需要強(qiáng)制轉(zhuǎn)換c = int(math.Sqrt(float64(a*a + b*b)))fmt.Println(c) }轉(zhuǎn)載于:https://www.cnblogs.com/peilanluo/p/10630275.html
總結(jié)
以上是生活随笔為你收集整理的go--基本数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算首站到末站最小费用
- 下一篇: FIFO buffer 和普通buffe