Golang 當中 byte 和 rune 類型的區別

文章目錄

  • Golang 當中 byte 和 rune 類型的區別
    • 類型定義與用途
    • 字符串處理差異
    • 內存占用
    • 典型引用場景

Golang 當中 byte 和 rune 類型的區別

在 Golang 中,runebyte 類型的區別主要體現在字符處理的方式和編碼支持上。

類型定義與用途

byte 類型

  • 本質是 uint8 的別名;
  • 用于處理原始字節數據ASCII 字符
  • 適合二進制操作或處理單字節編碼的文本(如 ASCII);

rune 類型

  • 本質是 int32 的別名;
  • 用于處理 Unicode 碼點,支持 UTF-8 編碼的多字節字符;
  • 適合需要操作完整字符的場景,尤其是非 ASCII 文本,比如中文。

字符串處理差異

遍歷字符串
使用索引逐字節訪問時,返回 byte 類型。使用 range 遍歷時,返回 rune 類型,自動解碼 UTF-8 字符:

s := "Hello 世界"
// 按byte遍歷(可能拆散多字節字符)
for i := 0; i < len(s); i++ {b := s[i] // 類型為byte
}// 按rune遍歷(完整字符)
for _, r := range s {fmt.Printf("%c ", r) // 輸出:H e l l o   世 界
}

轉換切片
[]byte(s) 將字符串轉換為原始字節序列;
[]rune(s) 將字符串轉換為 Unicode 碼點序列;

s := "世界"
fmt.Println(len([]byte(s))) // 輸出6(UTF-8編碼下每個漢字占3字節)
fmt.Println(len([]rune(s))) // 輸出2(兩個字符)

內存占用

  • byte:占用一個字節;
  • rune:占用四個字節;

典型引用場景

byte 適用場景

  • 處理二進制文件(如圖片、音頻);
  • 操作 ASCII 字符串(如解析 HTTP 請求頭,從數據流中獲取指定長度的字節流使用的也是 byte 類型);
  • 需要低內存占用的場景;

rune 適用場景

  • 統計字符數量;
  • 反轉含多字節字符的字符串;
  • 處理 UTF-8 字符的切割、替換等操作。

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

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

相關文章

vue將頁面導出成word

方法一&#xff1a;使用 html-docx-js html-docx-js 是一個輕量級的庫&#xff0c;可以將 HTML 轉換為 Word 文檔。 安裝依賴 首先安裝 html-docx-js&#xff1a; Bash深色版本 npm install html-docx-js --save創建導出邏輯 在 Vue 組件中實現導出功能的代碼如下&#xff1…

Three.js 快速入門教程【二十】3D模型加載優化實戰:使用gltf-pipeline與Draco對模型進行壓縮,提高加載速度和流暢性

系列文章目錄 Three.js 快速入門教程【一】開啟你的 3D Web 開發之旅 Three.js 快速入門教程【二】透視投影相機 Three.js 快速入門教程【三】渲染器 Three.js 快速入門教程【四】三維坐標系 Three.js 快速入門教程【五】動畫渲染循環 Three.js 快速入門教程【六】相機控件 Or…

前端框架入門:Angular

Angular 是由 Google 維護的前端框架,適用于構建單頁應用(SPA)。它使用TypeScript 作為主要開發語言,并提供了強大的模塊化、依賴注入(DI)、路由管理等特性。 一、Angular 基礎 1. Angular 介紹 Angular 是一個組件化、模塊化、雙向數據綁定的前端框架,適用于構建復雜…

基于51單片機的速度檢測報警器proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1I7roZEjrk349Is_YdMcsxQ 提取碼&#xff1a;1234 仿真圖&#xff1a; 芯片/模塊的特點&#xff1a; AT89C52/AT89C51簡介&#xff1a; AT89C51 是一款常用的 8 位單片機&#xff0c;由 Atmel 公司&#xff08;現已被 Microchip 收…

具身系列——Diffusion Policy算法實現CartPole游戲

代碼原理分析 1. 核心思想 該代碼實現了一個基于擴散模型&#xff08;Diffusion Model&#xff09;的強化學習策略網絡。擴散模型通過逐步去噪過程生成動作&#xff0c;核心思想是&#xff1a; ? 前向過程&#xff1a;通過T步逐漸將專家動作添加高斯噪聲&#xff0c;最終變成…

DeepSeek 本地化部署教程

1 概述 1.1 配置參考圖 科普&#xff1a; B&#xff0c;Billion&#xff08;十億&#xff09;&#xff0c;是 “參數量” 的單位。 模型量超過 一億&#xff0c;可稱之為 “大模型”。 2 軟件安裝 2.1 下載 Ollama 官方主頁&#xff1a;https://ollama.com/download主頁截圖…

matlab打開兩個工程

1、問題描述 寫代碼時&#xff0c;需要實時參考別人的代碼&#xff0c;需要同時打開2個模型&#xff0c;當模型在同一個工程內時&#xff0c;這是可以直接打開的&#xff0c;如圖所示 2、解決方案 再打開一個MATLAB主窗口 這個時候就可以同時打開多個模型了 3、正確的打開方…

mac 下配置flutter 總是失敗,請參考文章重新配置flutter 環境MacOS Flutter環境配置和安裝

一、安裝和運行Flutter的系統環境要求 想要安裝并運行 Flutter&#xff0c;你的開發環境需要最低滿足以下要求&#xff1a; 操作系統:macOS磁盤空間:2.8 GB(不包括IDE/tools的磁盤空間)。工具:Flutter使用git進行安裝和升級。我們建議安裝Xcode&#xff0c;其中包括git&#x…

第4.1節:使用正則表達式

1 第4.1節&#xff1a;使用正則表達式 將正則表達式用斜杠括起來&#xff0c;就能用作模式。隨后&#xff0c;該正則表達式會與每條輸入記錄的完整文本進行比對。&#xff08;通常情況下&#xff0c;它只需匹配文本的部分內容就能視作匹配成功。&#xff09;例如&#xff0c;以…

Java 代理(一) 靜態代理

學習代理的設計模式的時候&#xff0c;經常碰到的一個經典場景就是想統計某個方法的執行時間。 1 靜態代理模式的產生 需求1. 統計方法執行時間 統計方法執行時間&#xff0c;在很多API/性能監控中都有這個需求。 下面以簡單的計算器為例子&#xff0c;計算加法耗時。代碼如下…

每日總結3.28

藍橋刷題 3227 找到最多的數 方法一&#xff1a;摩爾投票法 #include <bits/stdc.h> using namespace std; #define int long long signed main() { int n,m; cin>>n>>m; int a[m*n]; for(int i0;i<n*m;i) { cin>>a[i]; } int cand…

Flutter快速搭建聊天

之前項目中使用的環信聊天&#xff0c;我們的App使用的Flutter開發的 。 所以&#xff0c;就使用的 em_chat_uikit &#xff0c;這個是環信開發的Flutter版本的聊天。 一開始&#xff0c;我們也用的環信的聊天&#xff0c;是收費的&#xff0c;但是&#xff0c;后面就發現&…

Sa-Token

簡介 Sa-Token 是一個輕量級 Java 權限認證框架&#xff0c;主要解決&#xff1a;登錄認證、權限認證、單點登錄、OAuth2.0、分布式Session會話、微服務網關鑒權 等一系列權限相關問題。 官方文檔 常見功能 登錄認證 本框架 用戶提交 name password 參數&#xff0c;調用登…

基于javaweb的SSM航班機票預訂平臺系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…

格雷碼、漢明碼,CRC校驗的區別

格雷碼、漢明碼和CRC校驗都是用于數據傳輸和存儲中的編碼技術。 它們在原理、功能和應用場景上存在顯著區別。 1.格雷碼&#xff08;Gray Code&#xff09; ? 定義&#xff1a;格雷碼是一種特殊的二進制編碼&#xff0c;任意兩個相鄰的碼字之間僅有一位不同。 ? 功能&#x…

【報錯】 /root/anaconda3/conda.exe: cannot execute binary file: Exec format error

背景: 安裝Anaconda3 bash Anaconda3-****-Linux-x86_64.sh 報錯: /root/anaconda3/conda.exe: cannot execute binary file: Exec format error 原因分析: 安裝包(如

JAVA實現動態IP黑名單過濾

一些惡意用戶(可能是黑客、爬蟲、DDoS 攻擊者)可能頻繁請求服務器資源&#xff0c;導致資源占用過高。因此需要一定的手段實時阻止可疑或惡意的用戶&#xff0c;減少攻擊風險。 通過 IP 封禁&#xff0c;可以有效拉黑攻擊者&#xff0c;防止資源被濫用&#xff0c;保障合法用戶…

開源的CMS建站系統可以隨便用嗎?有什么需要注意的?

開源CMS建站系統雖然具有許多優點&#xff0c;但并非完全“隨便用”。無論選哪個CMS系統&#xff0c;大家在使用的時候&#xff0c;可以盡可能地多注意以下幾點&#xff1a; 1、版權問題 了解開源許可證&#xff1a;不同的開源CMS系統采用不同的開源許可證&#xff0c;如GPL、…

故障識別 | 基于改進螂優化算法(MSADBO)優化變分模態提取(VME)結合稀疏最大諧波噪聲比解卷積(SMHD)進行故障診斷識別,matlab代碼

基于改進螂優化算法&#xff08;MSADBO&#xff09;優化變分模態提取&#xff08;VME&#xff09;結合稀疏最大諧波噪聲比解卷積&#xff08;SMHD&#xff09;進行故障診斷識別 一、引言 1.1 機械故障診斷的背景和意義 在工業生產的宏大畫卷中&#xff0c;機械設備的穩定運行…

探究 CSS 如何在HTML中工作

2025/3/28 向全棧工程師邁進&#xff01; 一、CSS的作用 簡單一句話——美化網頁 <p>Lets use:<span>Cascading</span><span>Style</span><span>Sheets</span> </p> 對于如上代碼來說&#xff0c;其顯示效果如下&#xff1…