Go 語言的字符類型
字符類型在工作中也會非常頻繁地用到,是一個(gè)非常重要的數(shù)據(jù)類型。本文主要介紹了 Go 語言中處理字符和字符串的數(shù)據(jù)類型。
1. 字符和字符串類型
序號 | 類型 | 說明 |
---|---|---|
1 | byte | uint8?類型的別名,同等于?uint8。一般用于表示?ASCII?字符,即只能操作簡單的字符,不支持中文操作。 |
2 | rune | int32?類型的別名,同等于?int32。一般用于表示?Unicode?字符,即可以處理任何字符。 |
3 | string | 一個(gè)指向 byte 數(shù)組的指針,可以為空字符串不可為nil。 |
2. 代碼演示
接下來使用一段代碼來更清晰地解釋byte
和rune
的區(qū)別,以及了解這三個(gè)類型的關(guān)系。
代碼塊
- 1 ?
package main
- 2
- 3 ?
import "fmt"
- 4
- 5?
//將字符串轉(zhuǎn)換為rune的數(shù)組,并替換數(shù)組第i個(gè)元素為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?
//將字符串轉(zhuǎn)換為byte的數(shù)組,并替換數(shù)組第i個(gè)元素為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個(gè)字符替換為A
- 24? ? ? ?
str2Byte(&str1, 0, 'A') //將第0個(gè)字符替換為A
- 25? ? ? ?
str2Byte(&str2, 7, 'A') //將第7個(gè)字符替換為A
- 26? ? ? ?
fmt.Println("rune 數(shù)組處理中文后:", str)
- 27? ? ? ?
fmt.Println("byte 數(shù)組處理中文后:", str1)
- 28? ? ? ?
fmt.Println("byte 數(shù)組處理英文后:", str2)
- 29?
}
輸出結(jié)果:
結(jié)論:
string
可以直接轉(zhuǎn)換為rune
或者byte
的數(shù)組;rune
和byte
可以互相轉(zhuǎn)換;byte
?的操作單位是一個(gè)字節(jié),可以理解為一個(gè)英文字符;rune
?的操作單位是一個(gè)字符,不管這個(gè)字符是什么字符。
3. 小結(jié)
本文主要學(xué)習(xí)了 Go 語言中的字符類型的使用,注意 byte 和 rune 使用上的區(qū)別。
文章來源于網(wǎng)絡(luò),侵刪!