golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)
1 總體區(qū)別
在Golang中,byte和rune是兩種不同類型的數(shù)據(jù)。簡(jiǎn)單來說,byte是一個(gè)8位的無符號(hào)整數(shù)類型,而rune則是一個(gè)32位的Unicode字符類型。
- Byte:
- 在Golang中,byte類型實(shí)際上是uint8的別名,它用來表示8位的無符號(hào)整數(shù)。通常用來存儲(chǔ)ASCII字符以及二進(jìn)制數(shù)據(jù)。
- 可以通過以下方式聲明byte類型變量:
var b byte = 65
- Rune:
- 在Golang中,rune類型實(shí)際上是int32的別名,用于表示Unicode字符。這是因?yàn)閁nicode字符可能需要多個(gè)字節(jié)來表示,因此需要更多的存儲(chǔ)空間。
- 可以通過以下方式聲明rune類型變量:
var r rune = '文'
總的來說,byte用于表示單個(gè)字節(jié)的數(shù)據(jù),而rune用于表示Unicode字符,可以更好地支持多語(yǔ)言和復(fù)雜的文本處理。
2 常見錯(cuò)誤
筆者在刷leecode在處理純ASCII字符的時(shí)候,常常分不清什么時(shí)候用rune,什么時(shí)候用byte。便用一下代碼總結(jié)。
如以下題目:
// 在不考慮效率的情況下,只是為了單純的說明什么時(shí)候用rune,什么時(shí)候用byte func isAnagram(s, t string) bool { if len(s) != len(t) { return false } sByte := []byte(s) // sByte 是byte類型的數(shù)組,所以數(shù)組內(nèi)每個(gè)子元素都是byte類型的 sMap := make(map[byte]int) for _, b := range sByte { sMap[b]++ } // 而t是string類型,所以此時(shí)返回的b其實(shí)是Unicode字符,可以理解為rune類型 // 所以此時(shí)b就需要類型轉(zhuǎn)換為byte for _, b := range t { if sMap[byte(b)] <= 0 { return false } sMap[byte(b)]-- } return true }
總結(jié)
到此這篇關(guān)于golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)的文章就介紹到這了,更多相關(guān)golang byte和rune內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解prometheus監(jiān)控golang服務(wù)實(shí)踐記錄
這篇文章主要介紹了詳解prometheus監(jiān)控golang服務(wù)實(shí)踐記錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11如何使用go實(shí)現(xiàn)創(chuàng)建WebSocket服務(wù)器
文章介紹了如何使用Go語(yǔ)言和gorilla/websocket庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的WebSocket服務(wù)器,并實(shí)現(xiàn)商品信息的實(shí)時(shí)廣播,感興趣的朋友一起看看吧2024-11-11源碼剖析Golang中map擴(kuò)容底層的實(shí)現(xiàn)
之前的文章詳細(xì)介紹過Go切片和map的基本使用,以及切片的擴(kuò)容機(jī)制。本文針對(duì)map的擴(kuò)容,會(huì)從源碼的角度全面的剖析一下map擴(kuò)容的底層實(shí)現(xiàn),需要的可以參考一下2023-03-03自動(dòng)生成代碼controller?tool的簡(jiǎn)單使用
這篇文章主要為大家介紹了自動(dòng)生成代碼controller?tool的簡(jiǎn)單使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05go語(yǔ)言的四數(shù)相加等于指定數(shù)算法
這篇文章主要介紹了go語(yǔ)言的四數(shù)相加等于指定數(shù)算法的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04Go語(yǔ)言中的定時(shí)器原理與實(shí)戰(zhàn)應(yīng)用
在Go語(yǔ)言中,Timer和Ticker是處理定時(shí)任務(wù)的重要工具,Timer用于一次性事件,而Ticker則用于周期性事件,本文詳細(xì)介紹了這兩種定時(shí)器的創(chuàng)建、使用和停止方法,并通過實(shí)際案例展示了它們?cè)诒O(jiān)控日志、檢查系統(tǒng)狀態(tài)等方面的應(yīng)用2024-10-10