内容简介:1.字符串字符串在Go语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、 float32、foat64等)一样。字符串的值为双引号中的内容,可以在Go语言的源码中直接添加非ASCⅡ码字符
1.字符串
字符串在 Go 语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、 float32、foat64等)一样。
字符串的值为双引号中的内容,可以在Go语言的源码中直接添加非ASCⅡ码字符
Go语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下所示
转移符 含义
\r 回车符(返回行首) \n 换行符(直接跳到下一行的同列位置) \t 制表符 \' 单引号 \" 双引号 \\ 反斜杠
2.字符串实现基于UTF-8编码
go 语言里的字符串的内部实现使用UTF8编码. 通过rune类型,可以方便地对每个UTF-8字符进行访问。
当然,Go语言也支持按传统的ASCII码方式进行逐字符访问。
3.字符
字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符非元素时可以获得字符。
Go语言的字符有以下两种:
一种是uint8类型,或者叫byte型,代表了ASCII码的一个字符。 另一种是rune类型,代表一个UTF-8字符。当需要处理中文、日文或者其他复合字符时, 则需要用到rune类型。rune类型实际是一个int32。
使用 fmt.Printf中的“%T”动词可以输出变量的实际类型,使用这个方法可以查看byte和rune的本来类型,代码如下:
var a byte = 'a' fmt.Printf("%d %T\n", a, a) var b rune='你' fmt.Printf("%d %T\n", b, b) 输出如下 97 uint8 20320 int32
4.UTF-8和 Unicode有何区别?
Unicode是字符集。ASCⅡ也是一种字符集。
字符集为每个字符分配一个唯一的ID,我们使用到的所有字符在 Unicode字符集中都有唯一的一个ID对应,
例如上面例子中的a在 Unicode与ASCII中的编码都是97。
“你“在 Unicode中的编码为20320,但是在不同国家的字符集中,“你”的ID会不同。
而无论任何情况下, Unicode中的字符的ID都是不会变化的。
UTF-8是编码规则,将 Unicode中字符的ID以某种方式进行编码。UTF-8的是一种
变长编码规则,从1到4个字节不等。
5.计算字符串长度
tip := "genji is a ninja" fmt.Println(len(tip)) tip2 := "认真" fmt.Println(len(tip2)) 结果: 16 6
len 表示字符串的ASCII 字符个数或字节长度
所以:
ASCII 字符串长度使用len() 长度
Unicode 字符串长度使用utf8.RuneCountInString()
5.字符串遍历
1.遍历每一个 ASCII 字符
直接使用for
2.按Unicode 字符遍历字符串
使用 range
str := "快乐 everyday" for _, s := range str{ fmt.Printf("unicode: %c %d\n", s,s) } for i:=0;i<len(str) ;i++ { fmt.Printf("ascii: %c %d\n", str[i], str[i]) }
结果如下:
unicode: 快 24555
unicode: 乐 20048
unicode: 32
unicode: e 101
unicode: v 118
unicode: e 101
unicode: r 114
unicode: y 121
unicode: d 100
unicode: a 97
unicode: y 121
ascii: å 229
ascii: ¿ 191
ascii: « 171
ascii: ä 228
ascii: ¹ 185
ascii: 144
ascii: 32
ascii: e 101
ascii: v 118
ascii: e 101
ascii: r 114
ascii: y 121
ascii: d 100
ascii: a 97
ascii: y 121
6.字符串格式化
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 查找一个字符串中最长不含重复字符的子字符串,计算该最长子字符串的长度
- 字符串、字符处理总结
- 高频算法面试题(字符串)leetcode 387. 字符串中的第一个唯一字符
- php删除字符串最后一个字符
- (三)C语言之字符串与字符串函数
- 算法笔记字符串处理问题H:编排字符串(2064)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。