網(wǎng)站首頁 編程語言 正文
字符串就是一串固定長(zhǎng)度的字符連接起來的字符序列(很多字符拼接在一起的)。
Go的字符串是由單個(gè)字節(jié)連接起來的。Go語言的字符串的字節(jié)使用UTF-8編碼標(biāo)識(shí)Unicode文本
字符串
與其他主要編程語?的差異 ??
string 是數(shù)據(jù)類型,不是引?或指針類型(因?yàn)槭菙?shù)據(jù)類型,所以string類型的零值不會(huì)是一個(gè)空類型nil,而是一個(gè)空字符串。)
var a []int if a == nil{ fmt.Println("a is nil") } var b string if b == ""{ fmt.Println("b is kong") }
string 是只讀的 byte slice,len 函數(shù)可以它所包含的 byte 數(shù)(string底層也是一個(gè)byte的數(shù)組)
string 的 byte 數(shù)組可以存放任何數(shù)據(jù)
var s string fmt.Println(len(s)) // s[1] = "3" string是不可變的byte slice s = "hello" fmt.Println(len(s)) s = "\xE4\xB8\xA5" //可以存儲(chǔ)任何二進(jìn)制數(shù)據(jù) fmt.Println(s,len(s)) 0 5 嚴(yán) 3
可以看到len得到的是字符串里面的byte數(shù),不一定代表里面的字符數(shù)。(中文由3個(gè)byte組成)
Unicode UTF8
- Unicode 是?種字符集(code point)(是字符的編碼)
- UTF8 是 unicode 的存儲(chǔ)實(shí)現(xiàn) (轉(zhuǎn)換為字節(jié)序列的規(guī)則,也就是我提供了一種編碼,并沒有說這種編碼在物理上怎么存儲(chǔ)起來)
rune是能夠取出字符串里面unicode,這樣就可以得到字符串??梢钥吹絬tf8存儲(chǔ)分為了三個(gè)byte。
s = "中" fmt.Println(len(s)) //是byte數(shù) c := []rune(s) //rune能夠取出字符串里面的unicode,這是c語言的機(jī)制,能夠幫我們做轉(zhuǎn)換 fmt.Printf("中 unicode 編碼%x\n",c[0]) fmt.Printf("中 UTF8 存儲(chǔ)樣式 %x",s) 3 中 unicode 編碼4e2d 中 UTF8 存儲(chǔ)樣式 e4b8ad
可以看到中字在字符編碼集里面的編碼,物理存儲(chǔ)形式是依賴于utf8規(guī)則,被存儲(chǔ)為0xE4B8AD,最后放在了string對(duì)應(yīng)byte切片里面。分別是3個(gè)byte,每個(gè)byte放一個(gè)。
常?字符串函數(shù)
- strings 包 (https://golang.org/pkg/strings/)
- strconv 包 (https://golang.org/pkg/strconv/)
原文鏈接:https://blog.csdn.net/qq_34556414/article/details/124245175
相關(guān)推薦
- 2022-01-30 VSCode標(biāo)簽內(nèi)的代碼塊無法折疊問題解決
- 2022-04-09 python中異常的傳播詳解_python
- 2022-11-18 Python實(shí)現(xiàn)常見數(shù)據(jù)格式轉(zhuǎn)換的方法詳解_python
- 2022-09-19 Tomcat日志自動(dòng)分割的三種方法_Tomcat
- 2022-11-13 Python中torch.load()加載模型以及其map_location參數(shù)詳解_python
- 2022-09-21 Android開發(fā)之AAR文件的生成與使用步驟_Android
- 2022-05-26 python中的getter與setter你了解嗎_python
- 2022-04-16 python中的?sorted()函數(shù)和sort()方法區(qū)別_python
- 最近更新
-
- 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)程分支