最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入解析Go?變量字符串與字符編碼問題

 更新時(shí)間:2022年04月19日 11:03:07   作者:富士康質(zhì)檢員張全蛋  
Go的字符串是由單個(gè)字節(jié)連接起來的,Go語言的字符串的字節(jié)使用UTF-8編碼標(biāo)識(shí)Unicode文本,接下來通過本文給大家介紹下Go變量字符串與字符編碼問題,需要的朋友可以參考下

字符串就是一串固定長(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,這樣就可以得到字符串。可以看到utf8存儲(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ù)

到此這篇關(guān)于Go 變量字符串與字符編碼的文章就介紹到這了,更多相關(guān)go 變量字符串字符編碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言高效編程的3個(gè)技巧總結(jié)

    Go語言高效編程的3個(gè)技巧總結(jié)

    Go語言是一種開源編程語言,可輕松構(gòu)建簡(jiǎn)單、可靠且高效的軟件,下面這篇文章主要給大家分享介紹了關(guān)于Go語言高效編程的3個(gè)技巧,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Go語言中循環(huán)Loop的用法介紹

    Go語言中循環(huán)Loop的用法介紹

    這篇文章介紹了Go語言中循環(huán)Loop的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Golang?Gin解析JSON請(qǐng)求數(shù)據(jù)避免出現(xiàn)EOF錯(cuò)誤

    Golang?Gin解析JSON請(qǐng)求數(shù)據(jù)避免出現(xiàn)EOF錯(cuò)誤

    這篇文章主要為大家介紹了Golang?Gin?優(yōu)雅地解析JSON請(qǐng)求數(shù)據(jù),避免ShouldBindBodyWith出現(xiàn)EOF錯(cuò)誤的源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 詳解Go?中的時(shí)間處理

    詳解Go?中的時(shí)間處理

    這篇文章主要介紹了Go?中的時(shí)間處理,本文將介紹?time?庫中一些重要的函數(shù)和方法,希望能幫助到那些一遇到?Go?時(shí)間處理問題就需要百度的童鞋,需要的朋友可以參考下
    2022-07-07
  • go 協(xié)程返回值處理操作

    go 協(xié)程返回值處理操作

    這篇文章主要介紹了go 協(xié)程返回值處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 基于Golang+Vue編寫一個(gè)手機(jī)遠(yuǎn)程控制電腦的懶人工具

    基于Golang+Vue編寫一個(gè)手機(jī)遠(yuǎn)程控制電腦的懶人工具

    這篇文章主要為大家詳細(xì)介紹了如何基于Golang+Vue編寫一個(gè)手機(jī)遠(yuǎn)程控制電腦的懶人工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-11-11
  • go語言編程之美自定義二進(jìn)制文件實(shí)用指南

    go語言編程之美自定義二進(jìn)制文件實(shí)用指南

    這篇文章主要介紹了go語言編程之美自定義二進(jìn)制文件實(shí)用指南
    2023-12-12
  • Go語言Select chan用法小結(jié)

    Go語言Select chan用法小結(jié)

    select語句是Go語言中用于處理多個(gè)通道操作的關(guān)鍵字,它允許你在多個(gè)通道上進(jìn)行非阻塞的選擇操作,本文就詳細(xì)介紹一下如何使用,感興趣的可以了解一下
    2023-09-09
  • go語言中布隆過濾器低空間成本判斷元素是否存在方式

    go語言中布隆過濾器低空間成本判斷元素是否存在方式

    這篇文章主要為大家介紹了go語言中布隆過濾器低空間成本判斷元素是否存在方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Golang使用WebSocket通信的實(shí)現(xiàn)

    Golang使用WebSocket通信的實(shí)現(xiàn)

    這篇文章主要介紹了Golang使用WebSocket通信的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論

左贡县| 通海县| 黄梅县| 蒙山县| 清徐县| 海晏县| 剑川县| 聊城市| 镇雄县| 南投市| 泰宁县| 石门县| 双城市| 商洛市| 利辛县| 河北省| 布尔津县| 湘西| 玉溪市| 泾川县| 蓝山县| 山阳县| 密云县| 竹山县| 江川县| 溆浦县| 泸定县| 贵定县| 包头市| 阿城市| 永靖县| 花垣县| 岳池县| 房山区| 青阳县| 南平市| 青河县| 监利县| 乌恰县| 平遥县| 昭觉县|