GO語言入門學(xué)習(xí)之基本數(shù)據(jù)類型字符串
字符串
Go語言中的字符串以原生數(shù)據(jù)類型出現(xiàn)。 Go 語言里的字符串的內(nèi)部實現(xiàn)使用UTF-8編碼。 字符串的值為雙引號(")中的內(nèi)容,可以在Go語言的源碼中直接添加非ASCII碼字符
GO語言中字符串是用雙引號包裹的
GO語言中單引號包裹的是字符
// 字符串 s := "Hello 中國" // 單獨的字母、漢字、符合表示一個字符 c1 := 'h' c2 := '1' c3 := '中' // 字節(jié):1字節(jié)=8Bit(8個二進制位) // 1個字符'A'=1個字節(jié) // 1個utf8編碼的漢字'中'= 一般占3個字節(jié)
字符串轉(zhuǎn)義符
轉(zhuǎn)義符 含義
\r 回車符(返回行首)
\n 換行符(直接跳到下一行的同列位置)
\t 制表符
' 單引號
" 雙引號
\ 反斜杠
字符串的常用操作
方法 介紹
len(str) 求長度
+或fmt.Sprintf 拼接字符串
strings.Split 分割
strings.contains 判斷是否包含
- strings.HasPrefix,strings.HasSuffix 前綴/后綴判斷
- strings.Index(),strings.LastIndex() 子串出現(xiàn)的位置
- strings.Join(a[]string, sep string) join操作
package main
import (
"fmt"
"strings"
)
// 字符串
func main(){
// \ 本來是具有特殊含義的,告訴程序\就是一個單純的\
path := "\"E:\\36期Python全棧開發(fā)資料\\Administrator(8E5370323193)\\預(yù)習(xí)(2)\""
path1 := "'E:\\36期Python全棧開發(fā)資料\\Administrator(8E5370323193)\\預(yù)習(xí)(2)'"
fmt.Println(path)
fmt.Println(path1)
s := "I'm ok"
fmt.Println(s)
// 多行的字符串
s2 := `
世情薄
人情惡
雨送黃昏花易落
`
fmt.Println(s2)
s3 := `E:\36期Python全棧開發(fā)資料\Administrator(8E5370323193)\預(yù)習(xí)(2)`
fmt.Println(s3)
// 字符串相關(guān)操作
fmt.Println(len(s3))
// 字符串拼接
name := "理想"
world := "遠大"
ss := name + world
fmt.Println(ss)
ss1 := fmt.Sprintf("%s%s", name, world)
// fmt.Printf("%s%s", name, world)
fmt.Println(ss1)
// 分割
ret := strings.Split(s3, "\\")
fmt.Println(ret)
// 包含
fmt.Println(strings.Contains(ss, "理想"))
// 前綴
fmt.Println(strings.HasPrefix(ss, "理想"))
// 后綴
fmt.Println(strings.HasSuffix(ss, "理想"))
s4 := "abcded"
fmt.Println(strings.Index(s4, "c"))
fmt.Println(strings.LastIndex(s4, "c"))
fmt.Println(strings.Index(s4, "d"))
fmt.Println(strings.LastIndex(s4, "d"))
// 拼接
fmt.Println(strings.Join(ret, "+"))
}
byte和rune類型
字符用單引號(’)包裹起來
Go 語言的字符有以下兩種:
- uint8類型,或者叫 byte 型,代表了ASCII碼的一個字符。
- rune類型,代表一個 UTF-8字符。rune類型實際是一個int32
字符串底層是一個byte數(shù)組,可以和[]byte類型相互轉(zhuǎn)換。字符串是不能修改的 字符串是由byte字節(jié)組成,所以字符串的長度是byte字節(jié)的長度。 rune類型用來表示utf8字符,一個rune字符由一個或多個byte組成。
修改字符串
要修改字符串,需要先將其轉(zhuǎn)換成[]rune或[]byte,完成后再轉(zhuǎn)換為string。無論哪種轉(zhuǎn)換,都會重新分配內(nèi)存,并復(fù)制字節(jié)數(shù)組。
類型轉(zhuǎn)換
強制類型轉(zhuǎn)換的基本語法如下:
T(表達式)
其中,T表示要轉(zhuǎn)換的類型。表達式包括變量、復(fù)雜算子和函數(shù)返回值等.
package main
import (
"fmt"
)
func main() {
s := "Hello 中國"
// len()求的是byte字節(jié)的數(shù)量
n := len(s)
fmt.Println(n)
// for i := 0; i < len(s); i++ {
// fmt.Println(s[i])
// fmt.Printf("%c\n", s[i]) // %c:字符
// }
// 字符串修改
s2 := "白蘿卜" // [白 蘿 卜]
s3 := []rune(s2) // 把字符串強制轉(zhuǎn)換成了一個rune切片
s3[0] = '紅' // 單引號表示字符
fmt.Println(string(s3)) // 把rune切片強制轉(zhuǎn)換成字符串
c1 := "紅"
c2 := '紅' // rune(int32)
fmt.Printf("c1:%T c2:%T\n", c1, c2) // c1:string c2:int32
c3 := "H"
c4 := 'H'
c5 := byte('H')
fmt.Printf("c3:%T c4:%T\n", c3, c4) // c3:string c4:int32
fmt.Printf("c4:%d\n", c4) // c4:72
fmt.Printf("c5:%T\n", c5) // c5:uint8
// 類型轉(zhuǎn)換
n1 := 10 // int
var f float64
f = float64(n1)
fmt.Println(f)
fmt.Printf("%T\n", f) // float64
}總結(jié)
到此這篇關(guān)于GO語言入門學(xué)習(xí)之基本數(shù)據(jù)類型字符串的文章就介紹到這了,更多相關(guān)GO語言數(shù)據(jù)類型字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang的Crypto/SHA256庫實戰(zhàn)指南
無論是在保護數(shù)據(jù)安全、驗證數(shù)據(jù)完整性,還是在構(gòu)建復(fù)雜的安全系統(tǒng)中,crypto/sha256都是Golang程序員不可或缺的工具,本文主要介紹了Golang的Crypto/SHA256庫實戰(zhàn)指南,感興趣的可以了解一下2024-02-02
Golang語言如何讀取http.Request中body的內(nèi)容
這篇文章主要介紹了Golang語言如何讀取http.Request中body的內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
淺析Golang切片截取功能與C++的vector區(qū)別
這篇文章主要介紹了Golang中切片的截取功能與C++中的vector有什么區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10
Go標(biāo)準(zhǔn)庫Flag庫和Log庫的使用
本文主要介紹了Go標(biāo)準(zhǔn)庫Flag庫和Log庫的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05

