golang rune類型解析,與byte,string對比,以及應用

Golang中的rune類型是一個32位的整數類型(int32),它是用來表示Unicode碼點的。rune類型的值可以是任何合法的Unicode碼點,它通常用來處理字符串中的單個字符。

在Golang中,字符常量使用單引號來表示,例如 'a'。使用單引號表示的字符常量是一個rune類型的值。

可以使用內置的rune函數將字符串轉換為rune類型的切片。例如:

str := "Hello, 世界"
runes := []rune(str)
fmt.Println(runes)

輸出結果是

[72 101 108 108 111 44 114 117 110 101 19990 30028]

前面幾位72,101...與ascii碼H e l l o的值一一對應

其實unicode與ascii都是字符串對應的計算機碼用的,Unicode是為了補充ascii的不足(畢竟ascii碼不包含中文)

可以使用內置的len函數獲取rune類型切片的長度,該長度表示字符串中的字符數量。例如:

str := "Hello, 世界"
runes := []rune(str)
fmt.Println(len(str),len(runes))

輸出結果分別是12與8

str := "Hello, 世界"
for i := 0; i < 12; i++ {fmt.Printf("%c",str[i])
}
//輸出結果Hello, ???

在輸出中,%c格式化動詞用于打印rune類型的值,將其表示為字符。

說明len(str)中文跟英文,所占的長度是不一樣的,中文占3個字節

而len(runes)返回的是字符串的個數

可以使用for循環遍歷rune類型切片,以便訪問字符串中的每個字符。例如:

for _, r := range runes {fmt.Printf("%c", r)
}

輸出結果為:Hello,世界

rune類型還可以轉換成string類型,例如:

var a rune = 'a'
fmt.Println(string(a))
var b []rune = []rune{'a','b'}
fmt.Println(string(b))

需要注意的是,因為rune類型是一個整數類型,所以可以進行算術和邏輯操作。

package mainimport "fmt"func main() {// 算術操作r1 := 'A'r2 := 'a'sum := r1 + r2diff := r1 - r2fmt.Printf("Sum: %c\n", sum)fmt.Printf("Difference: %c\n", diff)// 邏輯操作r3 := 'X'r4 := 'Y'logicalAnd := r3 & r4logicalOr := r3 | r4logicalXor := r3 ^ r4fmt.Printf("Logical AND: %c\n", logicalAnd)fmt.Printf("Logical OR: %c\n", logicalOr)fmt.Printf("Logical XOR: %c\n", logicalXor)
}

輸出值都是亂碼、或許在需要對稱加密場景下可以使用?

rune類型與Byte類型對比:

package mainimport "fmt"func main() {var a rune = '林'fmt.Println(a)//26519var b rune = 'a'fmt.Println(b)//97var c byte = 'a'fmt.Println(c)//97//var d byte = '林' //因為超出了值域會報錯,byte類型是0-255//fmt.Println(d)}

總結:rune?用于處理單個字符,string?用于處理字符串,byte?用于處理單個字節。

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

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

相關文章

rust - 使用 cargo-nextest 替代 cargo test

cargo-nextest 是新一代的rust測試程序&#xff0c;能夠極大提升測試性能&#xff0c;可以完全替代 cargo test 命令。 1. 安裝 cargo install cargo-nextest2. 執行測試 project ├── Cargo.toml ├── LICENSE ├── README.md ├── build.rs ├── core_utils │ …

K-means聚類模型

目錄 1.定義 2.K-means聚類模型的優點 3.K-means聚類模型的缺點 4.K-means聚類模型的應用場景 5.對K-means聚類模型未來的展望 6.小結 1.定義 什么是 K-means 聚類模型&#xff1f;K-means 聚類模型是一種無監督學習算法&#xff0c;用于將數據劃分為不同的組或簇&#…

Lumines推出RGBL彩色混合LED

Luminus Devices傾心打造了一款嶄新的4合1 RGBL&#xff08;紅綠藍綠石灰&#xff09;LED系列&#xff0c;專為舞臺與建筑照明領域量身打造&#xff0c;滿足對高顯色指數&#xff08;CRI&#xff09;與高輸出顏色混合的苛刻需求。這一創新之舉&#xff0c;無疑是照明技術的一次…

使用HiBurn燒錄鴻蒙.bin文件到Hi3861開發板

鴻蒙官方文檔的“Hi3861開發板第一個示例程序”中描述了——如何使用DevEco Device Tool工具燒錄二進制文件到Hi3861開發板&#xff1b; 本文將介紹如何使用HiBurn工具燒錄鴻蒙的.bin文件到Hi3861開發板。 獲取HiBurn工具 通過鴻蒙官方文檔我們知道DevEco Device Tool是一個V…

SAP--ABAP踩坑日志---日期函數的踩坑-----FIMA_DATE_CREATE

當你需要動態生成日期列的時候,出現了奇怪的BUG怎么辦? 用函數循環循環產生獲取下一個日期,結果出現了5.30 直接到6.1了 …我的5.31呢??? 解決方案:用這個,不要瞎用函數啊! day_col day_col 1.

Mybatis 與 MybatisPlus 打印sql日志配置

Mybatis 與 MybatisPlus 打印sql日志配置 方法一&#xff1a; Mybatis 配置&#xff1a; mybatis:configuration: ### 開啟打印sql配置log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ### 開啟駝峰配置 map-underscore-to-camel-case&#xff1a;trueMyb…

docker所在磁盤空間不足 遷移數據

1.查看原始目錄docker info | grep "Docker Root Dir" 一般在/var/lib/docker 2.停止docker service docekr stop 3.移動數據 注意 移動前不要創建docker目錄&#xff01; mv /var/lib/docker /home/docker 4.進入目錄查看是否與原始目錄相同&#xff0c;確認一…

LeetCode 題解:112. 路徑總和,遞歸,JavaScript,詳細注釋

原題鏈接&#xff1a; 112. 路徑總和 解題思路&#xff1a; 如果求根節點到葉子節點的路徑上的節點值之和&#xff0c;假設共有3個節點&#xff0c;那么寫成計算式是val1 val2 val3 sum那么將計算式轉換就可以得到val3 sum - val1 - val2也就是說&#xff0c;問題可以從…

表現層框架設計之表現層設計模式_2.MVP模式

1.MVP模式 MVP&#xff08;Model-View-Presenter&#xff09;模式提供數據&#xff0c;View負責顯示&#xff0c;Controller/Presenter負責邏輯的處理。MVP是從經典的模式MVC演變而來&#xff0c;它們的基本思想有相通的地方&#xff1a;Controller/Presenter負責邏輯的處理&am…

16、設計模式之迭代器模式

迭代器模式 迭代器模式&#xff08;Iterator Pattern&#xff09;是 Java 和 .Net 編程環境中非常常用的設計模式。這種模式用于順序訪問集合對象的元素&#xff0c;不需要知道集合對象的底層表示。 迭代器模式屬于行為型模式。 介紹 意圖&#xff1a; 提供一種方法順序訪問…

rtemis 包:多種機器學習算法集成!兼顧數據處理與可視化美圖

rtemis 是一個集機器學習與可視化于一體的 R 包&#xff0c;用于各種高級機器學習研究和應用。整體而言&#xff0c;該軟件有三個目標&#xff1a; 「應用數據科學」&#xff1a;使高級數據分析高效且易于使用 「機器學習研究」&#xff1a;提供一個平臺以開發和測試新穎的機器…

Linux 查詢開機時間

在Linux系統中&#xff0c;有幾種方法可以查詢系統的開機時間。 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 方法一&#xff1a;使用 uptime 命令 uptime 命令顯示系統的運行時間以及其他信息。 [nukixuso6 ~]# uptime輸出示例&#xff1a; 15:29:…

【MySQL精通之路】查詢優化器的使用(8)-優化器提示

博主PS&#xff1a;優化器提示的作用就是你可以提示優化器使用什么優化策略。當然優化器只是被提示了&#xff0c;而不是必須按你的提示做出操作&#xff0c;它可以執行或者拒絕你的提示。所以它叫優化器提示&#xff0c;而不是優化器配置。 控制優化器策略的一種方法是設置優化…

谷歌B端獨立站建站推廣,外貿建站訓練營,傻瓜式教學

做外貿方法重要&#xff0c;工具更重要&#xff0c;而這些背后的規則和套路&#xff0c;身邊的人往往不會告訴你&#xff0c;成功的人更不會教給你。本套課程主要內容包括&#xff1a;一套體系化的獨立站建站方法&#xff0c;學會“高效學習”避免無效努力&#xff0c;擁有獨立…

不閉合三維TSP:蛇優化算法SO求解不閉合三維TSP(起點固定,終點不定,可以更改數據集),MATLAB代碼

旅行商從城市1出發&#xff0c;終點城市由算法求解而定 部分代碼 close all clear clc global data load(data.txt)%導入TSP數據集 Dimsize(data,1)-1;%維度 lb-100;%下界 ub100;%上界 fobjFun;%計算總距離 SearchAgents_no100; % 種群大小&#xff08;可以修改&#xff09; …

k8s node NotReady后會發生什么?

K8s 是一種強大的容器編排和管理平臺&#xff0c;能夠高效地調度、管理和監控容器化應用程序&#xff1b;其本身使用聲明式語義管理著集群內所有資源模型、應用程序、存儲、網絡等多種資源&#xff0c;Node 本身又屬于 K8s 計算資源&#xff0c;上面承載運行著各種類型的應用程…

新零售數據中臺:構建零售業高效率、智能化的數據處理平臺_光點科技

隨著互聯網技術的快速發展和移動支付、大數據等技術的廣泛應用&#xff0c;零售行業已經逐漸從傳統零售向新零售模式轉變。在這個變革的時代背景下&#xff0c;新零售數據中臺應運而生&#xff0c;它作為零售行業數據資源的整合與智能分析的核心載體&#xff0c;成為推動零售行…

Batchnorm的主要作用

Batchnorm的主要作用 加速訓練&#xff1a;BatchNorm能夠使神經網絡訓練得更快更穩定。它通過調整每層網絡輸入的數據分布&#xff0c;使得網絡的訓練過程更高效。 穩定性&#xff1a;BatchNorm減少了不同批次數據之間的差異&#xff0c;使得模型訓練更加穩定&#xff0c;不容…

10最佳iPhone數據恢復軟件評論

您還在尋找最好的iPhone數據恢復軟件嗎&#xff1f; 似乎我們在iPhone上放置了越來越多與日常生活和工作有關的重要事情。照片可以保持珍貴的時刻&#xff0c;聯系人可以保持聯系&#xff0c;錄音&#xff0c;備忘錄和日歷可以作為提醒&#xff0c;視頻和歌曲可以娛樂&#xf…

Ethernet匯總

架構 Ethernet 匯總 Ethernet系統框架 stamac Ethernet DTS配置 Ethernet 模塊&通信 Uboot實現 uboot Ethernet初始化 uboot Ethernet 數據收發流程【1】