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