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 使用上的區別。