Trong Go, kiểu rune
được sử dụng để đại diện cho một ký tự Unicode. rune
thực chất là một alias (bí danh) cho kiểu dữ liệu int32
, cho phép bạn lưu trữ các ký tự từ bảng mã Unicode. Dưới đây là một số điểm quan trọng về kiểu rune
trong Go:
Khi bạn làm việc với văn bản và ký tự, việc sử dụng kiểu rune
rất hữu ích vì nó cho phép bạn làm việc với tất cả các ký tự Unicode, không chỉ các ký tự ASCII. Điều này rất quan trọng trong các ứng dụng đa ngôn ngữ và quốc tế hóa.
Mỗi giá trị rune
chiếm 4 byte (32 bit) và có thể lưu trữ giá trị từ 0 đến 0x10FFFF, tương đương với tất cả các ký tự trong bảng mã Unicode. Các ký tự có thể bao gồm chữ cái, số, ký hiệu và ký tự đặc biệt.
Bạn có thể khởi tạo và sử dụng kiểu rune
như sau:
package main import "fmt" func main() { var r rune = 'A' // Ký tự A fmt.Println("Giá trị rune:", r) fmt.Println("Ký tự tương ứng:", string(r)) // Chuyển đổi rune về string }
'A'
được gán cho biến r
kiểu rune
.r
(sẽ là mã Unicode của ký tự) và chuyển đổi r
về kiểu string
để hiển thị ký tự.Kiểu rune
cũng rất hữu ích khi bạn muốn lặp qua các ký tự trong một chuỗi, vì chuỗi trong Go là một dãy các byte. Bạn có thể sử dụng for range
để duyệt qua các ký tự trong chuỗi mà không bị ảnh hưởng bởi các byte:
package main import "fmt" func main() { s := "Golang" for i, r := range s { fmt.Printf("Ký tự tại vị trí %d là %cn", i, r) } }
for range
để lặp qua chuỗi s
, biến r
sẽ nhận giá trị rune
tương ứng với từng ký tự.Bạn cũng có thể thực hiện các phép toán với rune
giống như với các số nguyên, vì nó thực chất là một int32
. Ví dụ:
package main import "fmt" func main() { var r rune = 'A' r += 1 // Chuyển sang ký tự kế tiếp fmt.Println("Ký tự kế tiếp:", string(r)) // In ra 'B' }
r
được tăng thêm 1, dẫn đến việc ký tự kế tiếp là 'B'
.Kiểu rune
trong Go là một cách hữu ích và mạnh mẽ để làm việc với ký tự Unicode. Với kích thước 32 bit, rune
cho phép bạn dễ dàng xử lý văn bản đa ngôn ngữ, và tính linh hoạt của nó trong việc lặp qua chuỗi và thực hiện các phép toán giúp lập trình viên dễ dàng hơn trong việc quản lý các ký tự.