最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang中文字符串截取函數(shù)實現(xiàn)原理

 更新時間:2018年03月13日 17:08:44   投稿:wdc  
在golang中可以通過切片截取一個數(shù)組或字符串,但是當(dāng)截取的字符串是中文時,可能會出現(xiàn)問題,下面我們來自定義個函數(shù)解決Golang中文字符串截取問題

在golang中可以通過切片截取一個數(shù)組或字符串,但是當(dāng)截取的字符串是中文時,可能會出現(xiàn)的問題是:由于中文一個字不只是由一個字節(jié)組成,所以直接通過切片可能會把一個中文字的編碼截成兩半,結(jié)果導(dǎo)致最后一個字符是亂碼。

例如:

想要截取前四個字

name := "我是胡八一"
fmt.Println("name[:4] = ",name[:4])

執(zhí)行后得到的結(jié)果會是這樣的:

name[:4] = 我?

解決方法:
先將其轉(zhuǎn)為[]rune,再截取后,轉(zhuǎn)會string

nameRune := []rune(name)
fmt.Println("string(nameRune[:4]) = ",string(nameRune[:4]))

運行結(jié)果:

string(nameRune[:4]) =  我是胡八

好了弄懂了原理我們來寫一個完整的Golang中文字符串截取函數(shù)

func SubString(str string, begin, length int) string {
  fmt.Println("Substring =", str)
  rs := []rune(str)
  lth := len(rs)
  fmt.Printf("begin=%d, end=%d, lth=%d\n", begin, length, lth)
  if begin < 0 {
    begin = 0
  }
  if begin >= lth {
    begin = lth
  }
  end := begin + length

  if end > lth {
    end = lth
  }
  fmt.Printf("begin=%d, end=%d, lth=%d\n", begin, length, lth)
  return string(rs[begin:end])
}

實現(xiàn)Golang中文字符串截取函數(shù)很簡單利用golang原理語句就可實現(xiàn)

相關(guān)文章

  • 談?wù)揋o 什么時候會觸發(fā) GC問題

    談?wù)揋o 什么時候會觸發(fā) GC問題

    Go 語言作為一門新語言,在早期經(jīng)常遭到唾棄的就是在垃圾回收(下稱:GC)機制中 STW(Stop-The-World)的時間過長。下面文章就對此話題展開,感興趣的小伙伴可以參考下面文章的內(nèi)容
    2021-09-09
  • 深入探究Golang中flag標(biāo)準(zhǔn)庫的使用

    深入探究Golang中flag標(biāo)準(zhǔn)庫的使用

    在本文中,我們將深入探討 flag 標(biāo)準(zhǔn)庫的實現(xiàn)原理和使用技巧,以幫助讀者更好地理解和掌握該庫的使用方法,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-04-04
  • golang如何解決go get命令無響應(yīng)問題

    golang如何解決go get命令無響應(yīng)問題

    文章介紹了在Go語言中處理由于官方庫被封禁導(dǎo)致依賴下載失敗的方法,包括設(shè)置代理和直接克隆依賴包到GOPATH/src下
    2024-12-12
  • 如何在golang中檢查文件是否存在

    如何在golang中檢查文件是否存在

    如果你用的是?Python,可通過?os.path.exists?這樣的標(biāo)準(zhǔn)庫函數(shù)實現(xiàn),遺憾的是,Go?標(biāo)準(zhǔn)庫沒有提供這樣直接的函數(shù),所以下面我們就來了解下如何使用GO語言能實現(xiàn)檢查文件是否存在呢
    2024-02-02
  • 使用Lumberjack+zap進行日志切割歸檔操作

    使用Lumberjack+zap進行日志切割歸檔操作

    這篇文章主要介紹了使用Lumberjack+zap進行日志切割歸檔操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 利用Go語言實現(xiàn)輕量級OpenLdap弱密碼檢測工具

    利用Go語言實現(xiàn)輕量級OpenLdap弱密碼檢測工具

    這篇文章主要為大家詳細介紹了如何利用Go語言實現(xiàn)輕量級OpenLdap弱密碼檢測工具,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-09-09
  • 使用Singleflight實現(xiàn)Golang代碼優(yōu)化

    使用Singleflight實現(xiàn)Golang代碼優(yōu)化

    有許多方法可以優(yōu)化代碼以提高效率,減少運行進程就是其中之一,本文我們就來學(xué)習(xí)一下如何通過使用一個Go包Singleflight來減少重復(fù)進程,從而優(yōu)化Go代碼吧
    2023-09-09
  • golang調(diào)用shell命令(實時輸出,終止)

    golang調(diào)用shell命令(實時輸出,終止)

    本文主要介紹了golang調(diào)用shell命令(實時輸出,終止),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Go逃逸分析示例詳解

    Go逃逸分析示例詳解

    這篇文章主要為大家介紹了Go逃逸分析示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 如何使用Goland IDE go mod 方式構(gòu)建項目

    如何使用Goland IDE go mod 方式構(gòu)建項目

    這篇文章主要介紹了如何使用Goland IDE go mod 方式構(gòu)建項目,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10

最新評論

南皮县| 腾冲县| 高尔夫| 平度市| 霍邱县| 德庆县| 凉城县| 烟台市| 宁波市| 工布江达县| 龙胜| 古蔺县| 全州县| 仁布县| 石门县| 平谷区| 通海县| 太仆寺旗| 澎湖县| 浙江省| 富锦市| 大安市| 嘉鱼县| 桃园县| 灵丘县| 滨州市| 比如县| 开原市| 革吉县| 焉耆| 临朐县| 密云县| 精河县| 赤水市| 平塘县| 杭州市| 汽车| 阿尔山市| 长乐市| 汝阳县| 广西|