go語(yǔ)言數(shù)據(jù)類型之字符串string
1.Go語(yǔ)言String的本質(zhì)就是一個(gè)[]byte,所以他們之間可以互相轉(zhuǎn)換,byte數(shù)組的長(zhǎng)度就是字符串的長(zhǎng)度。
func StringTest1() { str := "Hello,World" a := str[0] b := str[1] fmt.Printf("a=%c\n", a) fmt.Printf("b=%c\n", b) }
結(jié)果
a=H
b=e
str=Mello,World
2.字符串的值一旦指定,就不能進(jìn)行修改。如果想修改,則可以先將字符串裝換成slice。
//當(dāng)試圖去修改str時(shí)候 str[0] = 'M'
會(huì)出現(xiàn)如下錯(cuò)誤提示
func StringTest1() { str := "Hello,World" a := str[0] b := str[1] fmt.Printf("a=%c\n", a) fmt.Printf("b=%c\n", b) var byteSlice []byte byteSlice = []byte(str) byteSlice[0] = 'M' str = string(byteSlice) fmt.Printf("str=%s\n", str) }
結(jié)果
a=H
b=e
str=Mello,World
3.rune表示utf8的字符,一個(gè)rune字符由一個(gè)或多個(gè)byte組成。
rune和字符串長(zhǎng)度之間是什么肥四?可以參考下面的例子:
func StringTest2() { str2 := "Hello,世界" var str2ByteSlice []byte str2ByteSlice = []byte(str2) var str2RuneSlice []rune str2RuneSlice = []rune(str2) fmt.Printf("strLen=%v\n",len(str2) ) fmt.Printf("str2ByteSlice=%v\n",len(str2ByteSlice) ) fmt.Printf("str2RuneSlice=%v\n",len(str2RuneSlice) ) for i:=0;i<len(str2RuneSlice);i++{ var b = str2RuneSlice[i] fmt.Printf("str2RuneSlice[%d]=%c\n" ,i,b) }
結(jié)果是什么?
strLen=12
str2ByteSlice=12
str2RuneSlice=8
從結(jié)果看到
①字符串的長(zhǎng)度和byte切片的長(zhǎng)度是一致的
②字符串的長(zhǎng)度要比rune切片的長(zhǎng)度大,說(shuō)明一個(gè)中文字符需要占用多個(gè)byte,這里是就是3個(gè),所以才有后面 str2RuneSlice = 8這個(gè)結(jié)果
進(jìn)而我們可以遍歷這個(gè)rune切片,追加下面代碼
for i:=0;i<len(str2RuneSlice);i++{ var b = str2RuneSlice[i] fmt.Printf("str2RuneSlice[%d]=%c\n" ,i,b) }
結(jié)果
str2RuneSlice[0]=H
str2RuneSlice[1]=e
str2RuneSlice[2]=l
str2RuneSlice[3]=l
str2RuneSlice[4]=o
str2RuneSlice[5]=,
str2RuneSlice[6]=世
str2RuneSlice[7]=界
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Golang信號(hào)量設(shè)計(jì)實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了Golang信號(hào)量設(shè)計(jì)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Golang加權(quán)輪詢負(fù)載均衡的實(shí)現(xiàn)
負(fù)載均衡器在向后端服務(wù)分發(fā)流量負(fù)載時(shí)可以使用幾種策略。本文主要介紹了Golang加權(quán)輪詢負(fù)載均衡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06利用systemd部署golang項(xiàng)目的實(shí)現(xiàn)方法
這篇文章主要介紹了利用systemd部署golang項(xiàng)目的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Golang?統(tǒng)計(jì)字符串中數(shù)字字母數(shù)量的實(shí)現(xiàn)方法
這篇文章主要介紹了Golang?統(tǒng)計(jì)字符串中數(shù)字字母數(shù)量,本文給出了兩種從字符串獲取數(shù)字與字母數(shù)量的方法,分別是ASCII 碼值和正則表達(dá)式,需要的朋友可以參考下2022-06-06ubuntu下搭建Go語(yǔ)言(golang)環(huán)境
這篇文章主要介紹了ubuntu下搭建Go語(yǔ)言(golang)環(huán)境,需要的朋友可以參考下2015-01-01golang中拿slice當(dāng)queue和拿list當(dāng)queue使用分析
這篇文章主要為大家介紹了golang?中拿slice當(dāng)queue和拿list當(dāng)queue使用分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08