1. 程式人生 >基礎教學 >Go語言入門 >13 Go 的字元型別

13 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)
}

輸出結果:

13 Go 的字元型別

byte 和 rune 區別例項輸出結果

結論:

  • string可以直接轉換為rune或者byte的陣列;
  • rune和byte可以互相轉換;
  • byte 的操作單位是一個位元組,可以理解為一個英文字元;
  • rune 的操作單位是一個字元,不管這個字元是什麼字元。

3. 小結

本文主要學習了 Go 語言中的字元型別的使用,注意 byte 和 rune 使用上的區別。