查漏补缺之Go的Strings, bytes, runes和字符
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了查漏补缺之Go的Strings, bytes, runes和字符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含881字,纯文字阅读大概需要2分钟。
内容图文
字节遍历,字符遍历
https://play.golang.org/p/DeZcCN9aHXo
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
s := "充气nb1"
// 字节遍历
for i := 0; i < len(s); i++ {
fmt.Println(s[i])
}
// 字符遍历
fmt.Println("len:", len(s))
for i, k := range s {
fmt.Println(i, k)
}
// 字节遍历2
for i, w := 0, 0; i < len(s); i += w {
runeValue, width := utf8.DecodeRuneInString(s[i:])
fmt.Printf("%#U starts at byte position %d\n", runeValue, i)
w = width
}
}
总结
-
golang的string是以UTF-8编码的,而UTF-8是一种1-4字节的可变长字符集,每个字符可用1-4字节 来表示
-
使用下标方式s[i]访问字符串s,s[i]是UTF-8编码后的一个字节(uint8),即按字节遍历
-
使用for i,v := range s 方式访问s,i是字符串下标编号,v是对应的字符值(int32=rune),即按字符遍历
-
使用fmt.Printf打印时,%c占位符打印的是字符,%+v占位符打印的是这个类型自身,如fmt.Printf("%+v",s[i])打印的就是字节一个十进制的无符号整数s[i]
-
如果希望以随机方式访问字符串s的每个字符,可以先转为[]rune数组,再以下标访问
参考资料
原文:https://www.cnblogs.com/yudidi/p/12177359.html
内容总结
以上是互联网集市为您收集整理的查漏补缺之Go的Strings, bytes, runes和字符全部内容,希望文章能够帮你解决查漏补缺之Go的Strings, bytes, runes和字符所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。