欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)

 更新時(shí)間:2024年03月02日 11:42:13   作者:jinchenga  
golang內(nèi)置類型有rune類型和byte類型,下面這篇文章主要給大家介紹了關(guān)于golang中byte和rune用法及新手易錯(cuò)點(diǎn)總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

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)文章

  • grpool?goroutine池協(xié)程管理

    grpool?goroutine池協(xié)程管理

    這篇文章主要介紹了grpool?goroutine池協(xié)程管理,goroutine協(xié)程非常輕量級(jí),這也是為什么go支持高并發(fā),但是goroutine頻繁創(chuàng)建銷毀對(duì)GC的壓力比較大,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-06-06
  • Go語(yǔ)言Zap日志庫(kù)使用教程

    Go語(yǔ)言Zap日志庫(kù)使用教程

    在項(xiàng)目開發(fā)中,經(jīng)常需要把程序運(yùn)行過程中各種信息記錄下來,有了詳細(xì)的日志有助于問題排查和功能優(yōu)化;但如何選擇和使用性能好功能強(qiáng)大的日志庫(kù),這個(gè)就需要我們從多角度考慮
    2023-02-02
  • Golang中下劃線(_)的不錯(cuò)用法分享

    Golang中下劃線(_)的不錯(cuò)用法分享

    golang中的下劃線表示忽略變量的意思,也沒有產(chǎn)生新的變量,但是后面的表達(dá)式依然會(huì)被執(zhí)行,本文為大家整理了golang中下劃線的一些不錯(cuò)的用法,需要的可以參考下
    2023-05-05
  • 詳解prometheus監(jiān)控golang服務(wù)實(shí)踐記錄

    詳解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實(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)

    源碼剖析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)單使用

    這篇文章主要為大家介紹了自動(dòng)生成代碼controller?tool的簡(jiǎn)單使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • go語(yǔ)言的四數(shù)相加等于指定數(shù)算法

    go語(yǔ)言的四數(shù)相加等于指定數(shù)算法

    這篇文章主要介紹了go語(yǔ)言的四數(shù)相加等于指定數(shù)算法的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 詳解Golang時(shí)間處理的踩坑及解決

    詳解Golang時(shí)間處理的踩坑及解決

    在各個(gè)語(yǔ)言之中都有時(shí)間類型的處理,這篇文章主要和大家分享一下Golang進(jìn)行時(shí)間處理時(shí)哪里最容易踩坑以及解決方法,需要的可以參考一下
    2023-01-01
  • Go語(yǔ)言中的定時(shí)器原理與實(shí)戰(zhàn)應(yīng)用

    Go語(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

最新評(píng)論