圆月山庄资源网 Design By www.vgjia.com
在 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
最快的是utf8.RuneCountInString()
总结
以上所述是小编给大家介绍的golang 中获取字符串个数的方法,希望对大家有所帮助,如果大家有任何
疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
更新日志
2024年05月17日
2024年05月17日
- 刘欢.2004-经典20年珍藏锦集【新索】【WAV+CUE】
- 中唱唱片群星《好歌珍藏-游子情深》2CDWAV
- CD圣经上榜天碟1995-乌仁娜-《蒙古草原之歌》[WAV+CUE].
- 【电影原声】武满彻《旭日东升》1993[WAV+CUE整轨]
- Taylor Swift《THE TORTURED POETS DEPARTMENT》[320K/MP3][148.54MB]
- Taylor Swift《THE TORTURED POETS DEPARTMENT》[FLAC/分轨][405.72MB]
- Joyce Jonathan《法式松弛感 漫步香榭丽舍》[320K/MP3][80.8MB]
- 女神异闻录5佐仓双叶coop攻略 p5r佐仓双叶对话选项攻略
- 【民谣】张智《尼勒克小镇》[FLAC]
- 林一峰2018-TRAVELOGUE4ESCAPE[香港首版][WAV+CUE]
- MollyLewis《OnTheLips》(2024)[Hi-Res96kHz_24bitFLAC]
- Joyce Jonathan《法式松弛感 漫步香榭丽舍》[FLAC/分轨][230.77MB]
- 群星《影视剧 春色寄情人 原声带》[320K/MP3][394.18MB]
- 吴牧野《强者独白II 李斯特巅峰作品选》[320K/MP3][216.01MB]
- 女神异闻录5御船千早coop攻略 p5r御船千早对话选项攻略