作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
1.字符概述
组成每个字符串的元素叫做"字符",可以通过遍历或者单个获取字符串元素获得字符。
Golang中没有专门的字符类型,如果要存储单个字符(字母),一般用byte或者rune来保存。
字符用单引号('')包裹起来。Go语言的字符有以下两种:
byte类型:
或者叫uint8型,代表一个ASCII码字符。
rune类型:
或者int32代表一个UTF-8字符。
当需要处理中文、日文或者其他复杂字符时,则需要用到rune类型。rune类型实际是一个int32。
Go使用了特殊的rune类型来处理Unicode,让基于Unicode的文本处理更为方便,也可以使用byte型进行默认字符串处理,性能和扩展性都有照顾。
Golang中字符使用UTF-8编码,Unicode是对应的字符集,UTF-8是Unicode的其中一种编码方案,其中还有UTF-16,UTF-32等多种编码方式。
2.定义byte和rune类型
package main
import "fmt"
func main() {
var (
// 英文字符,本质上对应的是一个unint8类型。字母,数字,标点等字符,底层是按照ASCII进行存储。
a byte = 'Y'
// 中文字符,本质上对应的是一个int32类型。汉子字符,底层对应的是Unicode码值23609。
b rune = '尹'
// 字符类型,本质上就是一个整数,也可以直接参与运算,输出字符的时候,会将对应的码值作为一个输出。
c = a + 1
)
fmt.Printf("a = %v, 对应字符: %v,---> %T\n", a, string(a), &a)
fmt.Printf("b = %v, 对应字符: %v,---> %T\n", b, string(b), &b)
fmt.Printf("c = %v, 对应字符: %v,---> %T\n", c, string(c), &c)
}
3.转义字符
Go语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示。
转义符 | 含义 |
---|---|
\r |
回车符(返回行首) |
\n |
换行符(直接跳到下一行的同列位置) |
\b |
退格 |
\t |
制表符 |
\" |
双引号 |
\\ |
反斜杠 |
package main
import "fmt"
func main() {
/*
\n:
换行。
\b:
退格。
\r:
光标回到本行开头,后续输入就会替换原有的字符。
\t:
制表符。
\":
原样输出双引号。
\\:
原样输出\。
*/
fmt.Println("xxxxx\nyyy")
fmt.Println("xxxxx\byyy")
fmt.Println("xxxxx\ryyy")
fmt.Println("xxxxx\tyyy")
fmt.Println("xxxxx\"yyy")
fmt.Println("xxxxx'y'yy")
fmt.Println("xxxxx\\yyy")
var (
// 字符串支持很多常见的转义符
s1 string = "\n\tGOPATH路径:\n\t\t 'd:\\yinzhengjie\\code\\Golang\\go.exe'\n\n\r哈哈哈\t\t\t\v开始学习Golang吧!\v要加油哟!\v你可以的!"
)
fmt.Printf("s1 ---> %s\n", s1)
}
4.遍历字符串获取字符
package main
import (
"fmt"
)
func main() {
var name = "JasonYin老师"
for k, v := range name {
fmt.Printf("%d ---> %v : %c, %T\n", k, v, v, v)
}
}