go byte和rune

仁义礼智信的發表於2024-08-20

byte是uint8的別名,rune是int32的別名

是的,在 Go 語言中,`byte` 和 `rune` 是特定型別的別名。具體來說:

- **`byte`** 是 `uint8` 的別名,表示一個無符號整數型別,其值範圍是從 0 到 255。在 Go 中,`byte` 型別經常用於表示單個位元組的資料,例如在處理文字或二進位制資料時。

- **`rune`** 是 `int32` 的別名,表示一個整數型別,其值範圍從 -2147483648 到 2147483647。然而,在實際使用中,`rune` 型別通常用來表示一個 Unicode 字元,其值範圍通常是 0 到 1114111(即從 U+0000 到 U+10FFFF)。儘管 `rune` 的底層型別是 `int32`,但在大多數情況下,它可以表示所有有效的 Unicode 字元。

### 示例程式碼

下面是一個簡單的示例,演示了 `byte` 和 `rune` 型別的使用:

```go
package main

import (
"fmt"
)

func main() {
// 使用 byte 型別表示單個位元組
b := byte('A')
fmt.Printf("Byte value of 'A': %d\n", b)
fmt.Printf("Byte type: %T\n", b)

// 使用 rune 型別表示一個 Unicode 字元
r := rune('A')
fmt.Printf("Rune value of 'A': %d\n", r)
fmt.Printf("Rune type: %T\n", r)

// 使用 rune 型別表示一個包含多個位元組的 Unicode 字元
emoji := rune('🌍') // 地球 emoji
fmt.Printf("Rune value of '🌍': %d\n", emoji)
fmt.Printf("Rune type: %T\n", emoji)
}
```

這段程式碼輸出如下:

```
Byte value of 'A': 65
Byte type: byte
Rune value of 'A': 65
Rune type: rune
Rune value of '🌍': 127762
Rune type: rune
```

### 總結

- `byte` 型別用於表示單個位元組(8 位無符號整數),在 Go 語言中通常用於處理位元組流資料。
- `rune` 型別用於表示 Unicode 字元(32 位整數),在 Go 語言中通常用於處理文字和字串。

相關文章