Go語言中的rune和byte類型詳解

1.?rune類型

1.1. 基本概念

1. rune是Go語言的內建類型,它是int32的別名,即32位有符號整數;

2. 用于表示一個Unicode碼點,全拼Unicode code point;

3. 可以表示任何UTF-8編碼的字符;

1.2.?特點

1. 每個rune對應一個Unicode字符;

2. 可以表示超過ASCII范圍的字符,如中文、日文、表情等;

3. 在內存中占用4個字節,即32位;

1.3. 使用示例

func main() {s := "你好,世界"for _, r := range s {fmt.Printf("%c => %U\n", r, r)}
}

2.?byte類型

2.1.?基本概念

1. byte是Go語言的內建類型,它是uint8的別名,即8位無符號整數;

2. 用于表示一個ASCII字符或UTF-8編碼的一個字節;

2.2.?特點

1. 每個byte對應一個字節,其中每個字創8位;

2. 只能表示ASCII字符或UTF-8編碼的單個字節;

3. 在內存中占用1個字節;

2.3.?使用示例

func main() {s := "Hello"for i := 0; i < len(s); i++ {fmt.Printf("%c => %d\n", s[i], s[i])}
}

3.?rune和byte的主要區別

4.?字符串遍歷時的差異

4.1.?使用byte遍歷,可能出錯

s := "你好"
for i := 0; i < len(s); i++ {fmt.Printf("%x ", s[i]) // 打印UTF-8編碼的每個字節
}
// 輸出: e4 bd a0 e5 a5 bd (6個字節)

4.2.?使用rune遍歷,正確方式

s := "你好"
for _, r := range s {fmt.Printf("%c ", r) // 打印每個Unicode字符
}
// 輸出: 你 好

5.?類型轉換

5.1. 字符串轉[]rune

s := "你好"
runes := []rune(s) // 轉換為rune切片

5.2. []rune轉字符串

runes := []rune{'你', '好'}
s := string(runes)

5.3.?字符串轉[]byte

s := "你好"
bytes := []byte(s) // 轉換為byte切片

5.4.?[]byte轉字符串

bytes := []byte{0xe4, 0xbd, 0xa0} // "你"的UTF-8編碼
s := string(bytes)

6.?實際應用場景

6.1.?rune的典型使用場景

1. 處理包含非ASCII字符的字符串;

2. 需要按字符而非字節操作字符串時;

3. 計算字符串的實際字符數而非字節數;

func countChars(s string) int {return len([]rune(s))
}

6.2.?byte的典型使用場景

1. 處理二進制數據;

2. 處理純ASCII字符串;

3. 需要與底層字節交互時;

func processBinary(data []byte) {// 處理字節數據
}

7.?注意事項

1. 使用len()函數直接獲取字符串長度時,返回的是字節數而非字符數;

2. 對非ASCII字符串按索引訪問時,得到的是UTF-8編碼的單個字節而非完整字符;

3. 在range循環中迭代字符串時,會自動按rune處理;

正確獲取字符串字符數的方法:

s := "你好,世界"
charCount := utf8.RuneCountInString(s) // 或者 len([]rune(s))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83238.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【中國?珠海】2025 物聯網與邊緣計算國際研討會(IoTEC2025)盛大來襲!

2025 物聯網與邊緣計算國際研討會&#xff08;IoTEC2025&#xff09;盛大來襲&#xff01; 科技浪潮奔涌向前&#xff0c;物聯網與邊緣計算已成為驅動各行業變革的核心力量。在此背景下&#xff0c;2025 物聯網與邊緣計算國際研討會&#xff08;IoTEC2025&#xff09;即將震撼…

Photoshop使用鋼筆繪制圖形

1、繪制臉部路徑 選擇鋼筆工具&#xff0c;再選擇“路徑”。 基于兩個點繪制一個彎曲的曲線 使用Alt鍵移動單個點&#xff0c;該點決定了后續的曲線方向 繼續繪制第3個點 最后一個點首尾是同一個點&#xff0c;使用鋼筆保證是閉合回路。 以同樣的方式繪制2個眼睛外框。 使用橢…

# 使用 Selenium 爬取蘇寧易購優質評價

使用 Selenium 爬取蘇寧易購優質評價 在數據挖掘和網絡爬蟲領域&#xff0c;Selenium 是一個強大的工具&#xff0c;尤其適合處理動態網頁內容。本文將通過一個實際案例&#xff0c;展示如何使用 Selenium 爬取蘇寧易購上的優質評價&#xff0c;并將這些評價保存到本地文件中。…

Windows上用FFmpeg推流及拉流的流程概覽

1. 視頻采集與推流&#xff08;Windows FFmpeg&#xff09; 采集設備&#xff1a;Windows上的攝像頭&#xff0c;比如“Integrated Camera”。 采集方式&#xff1a;FFmpeg通過 dshow 設備接口讀取攝像頭。 推流協議&#xff1a;你可以選擇推到 RTMP 或 RTSP 服務器。 推流…

研華工控機安裝Windows10系統,適用UEFI(GPT)格式安裝

主要硬件 主板&#xff1a;AIMB-787 、CPU&#xff1a;i5-6500 U盤啟動工具&#xff1a;通過網盤分享的文件&#xff1a;rufus-3.20.zip 鏈接: https://pan.baidu.com/s/1YlFfd-_EhFHCG4sEHBQ8dQ?pwdQT12 提取碼: QT12 Win10 22H2 Pro 純凈版系統&#xff1a;通過網盤分享…

什么是數字化轉型,如何系統性重構業務邏輯

“數字化轉型不是把原來的流程搬到系統里&#xff0c;而是用數據和技術重新定義業務邏輯&#xff0c;提升決策速度、客戶體驗和組織效率。” 光這一句話&#xff0c;其實就夠用了。 真懂的人&#xff0c;一聽這話就點頭&#xff1b;不懂的人&#xff0c;只覺得聽起來挺高級。…

windows安裝啟動elasticsearch

elasticsearch下載地址&#xff1a; https://www.elastic.co/downloads/past-releases#elasticsearch 1 Elasticsearch 的 Java 要求&#xff08;Elasticsearch版本選擇&#xff09;&#xff1a; Elasticsearch 7.0~8.x 支持 Java 11&#xff08;LTS&#xff09;。Elasticsea…

thc-ssl-dos:SSL 壓力測試的輕量級工具!全參數詳細教程!Kali Linux教程!

簡介 THC-SSL-DOS 是一款用于驗證 SSL 性能的工具。 建立安全的 SSL 連接需要服務器比客戶端高 15 倍的處理能力。 THC-SSL-DOS 利用這種不對稱特性&#xff0c;通過使服務器過載并使其斷網。 此問題影響當今所有 SSL 實現。供應商自 2003 年以來就已意識到這個問題&#x…

comfyui利用 SkyReels-V2直接生成長視頻本地部署問題總結 1

在通過桌面版comfyUI 安裝ComfyUI-WanVideoWrapper 進行SkyReels-V2 生成長視頻的過程中&#xff0c;出現了&#xff0c;很多錯誤。 總結一下&#xff0c;讓大家少走點彎路 下面是基于搜索結果的 ComfyUI 本地部署 SkyReels-V2 實現長視頻生成的完整指南&#xff0c;涵蓋環境配…

廣告攔截器:全方位攔截,暢享無廣告體驗

在數字時代&#xff0c;廣告無處不在。無論是瀏覽網頁、使用社交媒體&#xff0c;還是觀看視頻&#xff0c;廣告的頻繁彈出常常打斷我們的體驗&#xff0c;讓人不勝其煩。更令人擔憂的是&#xff0c;一些廣告可能包含惡意軟件&#xff0c;威脅我們的設備安全和個人隱私。AdGuar…

【配置vscode默認終端為git bash】

配置vscode默認終端為git bash 點擊左下角小齒輪&#xff0c;點擊設置&#xff0c;搜索terminal.integrated.profiles.windows&#xff0c;點擊在setting.json中編輯 第一部分是當前的所有的終端&#xff0c;第二部分是配置默認的終端"terminal.integrated.defaultProfi…

【解決辦法】Git報錯error: src refspec main does not match any.

在命令行中使用 Git 進行 git push -u origin main 操作時遇到報錯error: src refspec main does not match any。另一個錯誤信息是&#xff1a;error: failed to push some refs to https://github.com/xxx/xxx.git.這是在一個新設備操作時遇到的問題&#xff0c;之前沒有注意…

在Mathematica中可視化Root和Log函數

對于取n次根式&#xff0c;使用其實部 當做高度函數&#xff0c;可以實現可視化&#xff1a; ViewRootSurface[n_Integer, resolution_Integer] : ParametricPlot3D[{r*Cos[theta], r*Sin[theta], r^(1/n)*Cos[theta/n]},{r, 0, 2}, {theta, 0, 2*n*Pi},PlotPoints -> {res…

ONLYOFFICE文檔API:編輯器的品牌定制化

在當今數字化辦公時代&#xff0c;文檔編輯器已成為各類企業、組織和開發者不可或缺的工具之一。ONLYOFFICE 文檔提供的功能豐富且強大的文檔編輯 API&#xff0c;讓開發者能夠根據自己的產品需求和品牌特點&#xff0c;定制編輯器界面&#xff0c;實現品牌化展示&#xff0c;為…

Java開發經驗——阿里巴巴編碼規范實踐解析6

摘要 本文深入解析了阿里巴巴編碼規范在數據庫設計和Java開發中的實踐應用。詳細闡述了數據庫字段命名、類型選擇、索引命名等規范&#xff0c;以及Java POJO類的對應規范。強調了字段命名的重要性&#xff0c;如布爾字段命名規則、表名和字段名的命名禁忌等。同時&#xff0c…

筆試筆記(運維)

&#xff08;數據庫&#xff0c;SQL&#xff09; limit1 隨機返回其中一個聚合函數不可以嵌套使用 【^】這個里面的數據任何形式組合都沒有 sql常用語句順序&#xff1a;from-->where-->group by-->having-->select-->order by-->limit 只要其中一個表存在匹…

Codeforces 1027 Div3(ABCDEF)

前言 無敵&#xff01;&#xff01;第一次打Div3&#xff0c;因為之前打Div4賽時也就三四題&#xff0c;所以在打之前根本沒想到自己能做到賽時三題&#xff01;&#xff01;雖然第三題是離結束十幾秒的時候交的&#xff0c;沒想到判完題比賽結束了還不算賽時通過……TvT A. …

第九天:java注解

注解 1 什么是注解&#xff08;Annotation&#xff09; public class Test01 extends Object{//Override重寫的注解Overridepublic String toString() {return "Test01{}";} }2 內置注解 2.1 Override Override重寫的注解 Override public String toString() {ret…

【論文解讀】Deformable DETR | Deformable Transformers for End-to-End Object Detection

論文地址&#xff1a;https://arxiv.org/pdf/2010.04159 代碼地址&#xff1a;https://github.com/fundamentalvision/Deformable-DETR 摘要 DETR最近被提出&#xff0c;旨在消除物體檢測中許多手工設計的組件的需求&#xff0c;同時展示出良好的性能。然而&#xff0c;由于T…

從0到1上手Trae:開啟AI編程新時代

摘要&#xff1a;字節跳動 2025 年 1 月 19 日發布的 Trae 是一款 AI 原生集成開發環境工具&#xff0c;3 月 3 日國內版推出。它具備 AI 問答、代碼自動補全、基于 Agent 編程等功能&#xff0c;能自動化開發任務&#xff0c;實現端到端開發。核心功能包括智能代碼生成與補全、…