網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
字符串
Go語(yǔ)言中的字符串以原生數(shù)據(jù)類型出現(xiàn)。 Go 語(yǔ)言里的字符串的內(nèi)部實(shí)現(xiàn)使用UTF-8編碼。 字符串的值為雙引號(hào)(")中的內(nèi)容,可以在Go語(yǔ)言的源碼中直接添加非ASCII碼字符
GO語(yǔ)言中字符串是用雙引號(hào)包裹的
GO語(yǔ)言中單引號(hào)包裹的是字符
// 字符串 s := "Hello 中國(guó)" // 單獨(dú)的字母、漢字、符合表示一個(gè)字符 c1 := 'h' c2 := '1' c3 := '中' // 字節(jié):1字節(jié)=8Bit(8個(gè)二進(jìn)制位) // 1個(gè)字符'A'=1個(gè)字節(jié) // 1個(gè)utf8編碼的漢字'中'= 一般占3個(gè)字節(jié)
字符串轉(zhuǎn)義符
轉(zhuǎn)義符 含義
\r 回車符(返回行首)
\n 換行符(直接跳到下一行的同列位置)
\t 制表符
' 單引號(hào)
" 雙引號(hào)
\ 反斜杠
字符串的常用操作
? ? ? ? ? ? ? 方法 ? ? ? ? ? ? ? ? ?? ? ?介紹 ??
? ? ? ? ? ?len(str) ? ? ? ? ? ? ??? ? ?求長(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操作
package main import ( "fmt" "strings" ) // 字符串 func main(){ // \ 本來(lái)是具有特殊含義的,告訴程序\就是一個(gè)單純的\ 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 := "遠(yuǎn)大" 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類型
字符用單引號(hào)(’)包裹起來(lái)
Go 語(yǔ)言的字符有以下兩種:
- uint8類型,或者叫 byte 型,代表了ASCII碼的一個(gè)字符。
- rune類型,代表一個(gè) UTF-8字符。rune類型實(shí)際是一個(gè)int32
字符串底層是一個(gè)byte數(shù)組,可以和[]byte類型相互轉(zhuǎn)換。字符串是不能修改的 字符串是由byte字節(jié)組成,所以字符串的長(zhǎng)度是byte字節(jié)的長(zhǎng)度。 rune類型用來(lái)表示utf8字符,一個(gè)rune字符由一個(gè)或多個(gè)byte組成。
修改字符串
要修改字符串,需要先將其轉(zhuǎn)換成[]rune或[]byte,完成后再轉(zhuǎn)換為string。無(wú)論哪種轉(zhuǎn)換,都會(huì)重新分配內(nèi)存,并復(fù)制字節(jié)數(shù)組。
類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換的基本語(yǔ)法如下:
T(表達(dá)式)
其中,T表示要轉(zhuǎn)換的類型。表達(dá)式包括變量、復(fù)雜算子和函數(shù)返回值等.
package main import ( "fmt" ) func main() { s := "Hello 中國(guó)" // 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) // 把字符串強(qiáng)制轉(zhuǎn)換成了一個(gè)rune切片 s3[0] = '紅' // 單引號(hào)表示字符 fmt.Println(string(s3)) // 把rune切片強(qiáng)制轉(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é)
原文鏈接:https://www.cnblogs.com/QiaoPengjun/p/16154604.html
相關(guān)推薦
- 2022-11-17 Go語(yǔ)言學(xué)習(xí)教程之goroutine和通道的示例詳解_Golang
- 2022-10-15 C++?accumulate函數(shù)詳細(xì)介紹和具體案例_C 語(yǔ)言
- 2023-02-02 Nginx?error_page自定義錯(cuò)誤頁(yè)面設(shè)置過程_nginx
- 2022-10-02 SQL堆疊注入簡(jiǎn)介_MsSql
- 2022-10-24 IOS開發(fā)Swift?與?OC相互調(diào)用詳解_IOS
- 2022-10-31 一文搞懂Go語(yǔ)言操作Redis的方法_Golang
- 2023-06-17 python?__init__與?__new__的區(qū)別_python
- 2023-01-05 Qt操作SQLite數(shù)據(jù)庫(kù)的教程詳解_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支