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

golang 中獲取字符串個數(shù)的方法

 更新時間:2019年08月15日 10:29:57   作者:自然對數(shù)  
這篇文章主要介紹了golang 中獲取字符串個數(shù) ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

在 golang 中不能直接用 len 函數(shù)來統(tǒng)計字符串長度,查看了下源碼發(fā)現(xiàn)字符串是以 UTF-8 為格式存儲的,說明 len 函數(shù)是取得包含 byte 的個數(shù)

// string is the set of all strings of 8-bit bytes, conventionally but not
// necessarily representing UTF-8-encoded text. A string may be empty, but
// not nil. Values of string type are immutable.

舉個例子,”Hello, 世界“(因為,對比所以用了中文)

s := "Hello, 世界"
fmt.Println(len(s)) // 13
fmt.Println([]byte(s)) // [72 101 108 108 111 44 32 228 184 150 231 149 140]

既然是以 byte 存儲的,那自然就想到了取 byte 的長度

- bytes.Count() 
- strings.Count() 
- 將字符串轉換為 []runee 后調用 len 函數(shù)
- 使用 utf8.RuneCountInString() 
package main
import (
  "bytes"
  "fmt"
  "strings"
  "testing"
  "unicode/utf8"
)
/*
在 golang 中不能直接用 len 函數(shù)來統(tǒng)計字符串長度,查看了下源碼發(fā)現(xiàn)字符串是以 UTF-8 為格式存儲的,說明 len 函數(shù)是取得包含 byte 的個數(shù)
*/
func main() {
  s := "hello, 世界"
  fmt.Println(len(s))  // 13
  fmt.Println([]byte(s)) // [72 101 108 108 111 44 32 228 184 150 231 149 140]
  fmt.Print(f1(s))
}
func f1(s string) int {
  return bytes.Count([]byte(s), nil) - 1
}
func f2(s string) int {
  return strings.Count(s, "") - 1
}
func f3(s string) int {
  return len([]rune(s))
}
func f4(s string) int {
  return utf8.RuneCountInString(s)
}
var s = "Hello, 世界"
func Benchmark1(b *testing.B) {
  for i := 0; i < b.N; i++ {
    f1(s)
  }
}
func Benchmark2(b *testing.B) {
  for i := 0; i < b.N; i++ {
    f2(s)
  }
}
func Benchmark3(b *testing.B) {
  for i := 0; i < b.N; i++ {
    f3(s)
  }
}
func Benchmark4(b *testing.B) {
  for i := 0; i < b.N; i++ {
    f4(s)
  }
}

在 golang ldea配置中我沒有看到 benchamark配置,總說包不對,在命令行中輸入

go test stringCount_test.go -bench ".*"

得到以下結果

Benchmark1-12           100000000               17.7 ns/op
Benchmark2-12           100000000               14.0 ns/op
Benchmark3-12           100000000               14.5 ns/op
Benchmark4-12           100000000               13.1 ns/op

最快的是utf8.RuneCountInString()

總結

以上所述是小編給大家介紹的golang 中獲取字符串個數(shù)的方法,希望對大家有所幫助,如果大家有任何

疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • Golang實現(xiàn)Biginteger大數(shù)計算實例詳解

    Golang實現(xiàn)Biginteger大數(shù)計算實例詳解

    這篇文章主要為大家介紹了Golang實現(xiàn)Biginteger大數(shù)計算實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Go語言struct類型詳解

    Go語言struct類型詳解

    這篇文章主要介紹了Go語言struct類型詳解,struct是一種數(shù)據(jù)類型,可以用來定義自己想的數(shù)據(jù)類型,需要的朋友可以參考下
    2014-10-10
  • Go語言sync.Cond使用方法詳解

    Go語言sync.Cond使用方法詳解

    Go語言標準庫中還包含條件變量 sync.Cond,它可以讓一組 Goroutine 都在滿足特定條件時被喚醒,每一個sync.Cond結構體在初始化時都需要傳入一個互斥鎖,接下來我們將通過文中例子了解它的使用方法,感興趣的同學跟著小編一起來看看吧
    2023-07-07
  • 詳解Go語言中的逃逸分析

    詳解Go語言中的逃逸分析

    逃逸分析是編譯器用于決定將變量分配到棧上還是堆上的一種行為,下面小編就來為大家詳細講講go語言中是如何進行逃逸分析的,需要的小伙伴可以參考下
    2023-09-09
  • 解決 Golang VS Code 插件下載安裝失敗的問題

    解決 Golang VS Code 插件下載安裝失敗的問題

    這篇文章主要介紹了解決 Golang VS Code 插件下載安裝失敗,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • golang實現(xiàn)命令行程序的使用幫助功能

    golang實現(xiàn)命令行程序的使用幫助功能

    這篇文章介紹了golang實現(xiàn)命令行程序使用幫助的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Golang?WorkerPool線程池并發(fā)模式示例詳解

    Golang?WorkerPool線程池并發(fā)模式示例詳解

    這篇文章主要為大家介紹了Golang?WorkerPool線程池并發(fā)模式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Golang中自定義json序列化時間格式的示例代碼

    Golang中自定義json序列化時間格式的示例代碼

    Go語言作為一個由Google開發(fā),號稱互聯(lián)網(wǎng)的C語言的語言,自然也對JSON格式支持很好,下面這篇文章主要介紹了關于Golang中自定義json序列化時間格式的相關內容,下面話不多說了,來一起看看詳細的介紹吧
    2024-08-08
  • GO 使用Webhook 實現(xiàn)github 自動化部署的方法

    GO 使用Webhook 實現(xiàn)github 自動化部署的方法

    這篇文章主要介紹了GO 使用Webhook 實現(xiàn)github 自動化部署的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Golang學習之平滑重啟

    Golang學習之平滑重啟

    這篇文章主要介紹了Golang學習之平滑重啟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08

最新評論