91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用golang怎么獲取字符串的個數

發布時間:2021-02-05 17:21:21 來源:億速云 閱讀:202 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關利用golang怎么獲取字符串的個數,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

在 golang 中不能直接用 len 函數來統計字符串長度,查看了下源碼發現字符串是以 UTF-8 為格式存儲的,說明 len 函數是取得包含 byte 的個數

// 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 函數
- 使用 utf8.RuneCountInString()
package main
import (
  "bytes"
  "fmt"
  "strings"
  "testing"
  "unicode/utf8"
)
/*
在 golang 中不能直接用 len 函數來統計字符串長度,查看了下源碼發現字符串是以 UTF-8 為格式存儲的,說明 len 函數是取得包含 byte 的個數
*/
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

關于利用golang怎么獲取字符串的個數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

手游| 阳泉市| 都匀市| 平泉县| 岳西县| 罗江县| 佛山市| 都昌县| 昆山市| 井陉县| 西乌珠穆沁旗| 江安县| 保靖县| 京山县| SHOW| 嘉禾县| 昌宁县| 中江县| 嘉黎县| 漳州市| 荣成市| 吉首市| 东莞市| 遵义县| 遵义市| 合山市| 淮滨县| 攀枝花市| 宽甸| 陵川县| 凤庆县| 遂川县| 贵溪市| 清水县| 天峨县| 苏尼特左旗| 侯马市| 白玉县| 铁岭县| 咸阳市| 神池县|