Go 语言的字符类型
字符类型在工作中也会非常频繁地用到,是一个非常重要的数据类型。本文主要介绍了 Go 语言中处理字符和字符串的数据类型。
1. 字符和字符串类型
序号 | 类型 | 说明 |
---|---|---|
1 | byte | uint8 类型的别名,同等于 uint8。一般用于表示 ASCII 字符,即只能操作简单的字符,不支持中文操作。 |
2 | rune | int32 类型的别名,同等于 int32。一般用于表示 Unicode 字符,即可以处理任何字符。 |
3 | string | 一个指向 byte 数组的指针,可以为空字符串不可为nil。 |
2. 代码演示
接下来使用一段代码来更清晰地解释byte
和rune
的区别,以及了解这三个类型的关系。
package main
import "fmt"
//将字符串转换为rune的数组,并替换数组第i个元素为ch
func str2Rune(str *string, i int, ch rune) {
temp := []rune(*str)
temp[i] = ch
*str = string(temp)
}
//将字符串转换为byte的数组,并替换数组第i个元素为ch
func str2Byte(str *string, i int, ch byte) {
temp := []byte(*str)
temp[i] = ch
*str = string(temp)
}
func main() {
str := "你好 hello"
str1 := "你好 hello"
str2 := "你好 hello"
str2Rune(&str, 0, 'A') //将第0个字符替换为A
str2Byte(&str1, 0, 'A') //将第0个字符替换为A
str2Byte(&str2, 7, 'A') //将第7个字符替换为A
fmt.Println("rune 数组处理中文后:", str)
fmt.Println("byte 数组处理中文后:", str1)
fmt.Println("byte 数组处理英文后:", str2)
}
输出结果:
结论:
string
可以直接转换为rune
或者byte
的数组;rune
和byte
可以互相转换;byte
的操作单位是一个字节,可以理解为一个英文字符;rune
的操作单位是一个字符,不管这个字符是什么字符。
3. 小结
本文主要学习了 Go 语言中的字符类型的使用,注意 byte 和 rune 使用上的区别。