go語言數(shù)據(jù)類型之字符串string
1.Go語言String的本質(zhì)就是一個(gè)[]byte,所以他們之間可以互相轉(zhuǎn)換,byte數(shù)組的長度就是字符串的長度。
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和字符串長度之間是什么肥四?可以參考下面的例子:
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é)果看到
①字符串的長度和byte切片的長度是一致的
②字符串的長度要比rune切片的長度大,說明一個(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]=界
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Golang并發(fā)編程之main goroutine的創(chuàng)建與調(diào)度詳解
這篇文章主要為大家詳細(xì)介紹了Golang并發(fā)編程中main goroutine的創(chuàng)建與調(diào)度,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-03-03
golang DNS服務(wù)器的簡單實(shí)現(xiàn)操作
這篇文章主要介紹了golang DNS服務(wù)器的簡單實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04
利用Golang實(shí)現(xiàn)對(duì)配置文件加密
在實(shí)際的應(yīng)用中,配置文件通常包含了一些敏感的信息,如數(shù)據(jù)庫密碼、API密鑰等,為了保護(hù)這些敏感信息不被惡意獲取,我們可以對(duì)配置文件進(jìn)行加密,本文將介紹如何使用Go語言實(shí)現(xiàn)對(duì)配置文件的加密,需要的朋友可以參考下2023-10-10
教你利用Golang可選參數(shù)實(shí)現(xiàn)可選模式
本文討論Golang函數(shù)可選參數(shù)及函數(shù)類型,以及如何利用可選函數(shù)類型實(shí)現(xiàn)可選模式。同時(shí)通過構(gòu)造函數(shù)作為示例,實(shí)現(xiàn)強(qiáng)大帶可選參數(shù)的構(gòu)造函數(shù),讓代碼更直觀、靈活、支持?jǐn)U展2023-01-01

