Kiểu dữ liệu trong Go
Dưới đây liệt kê tất cả các kiểu tích hợp trong ngôn ngữ Go, để tham khảo, chi tiết hơn có thể đến Sổ tay tham khảo - Kiểu.
Kiểu boolean
Kiểu boolean chỉ có giá trị đúng và sai.
| Kiểu | Mô tả |
|---|---|
bool | true là giá trị đúng, false là giá trị sai |
TIP
Trong Go, số nguyên 0 không đại diện cho giá trị sai, số nguyên khác 0 cũng không thể đại diện cho giá trị đúng, tức là số không thể thay thế giá trị boolean để phán đoán logic, hai loại này là hoàn toàn khác nhau.
Kiểu số nguyên
Go phân bổ các kiểu khác nhau cho số nguyên có số bit khác nhau, chủ yếu chia thành số nguyên không dấu và số nguyên có dấu.
| Số thứ tự | Kiểu và mô tả |
|---|---|
uint8 | Số nguyên 8 bit không dấu |
uint16 | Số nguyên 16 bit không dấu |
uint32 | Số nguyên 32 bit không dấu |
uint64 | Số nguyên 64 bit không dấu |
int8 | Số nguyên 8 bit có dấu |
int16 | Số nguyên 16 bit có dấu |
int32 | Số nguyên 32 bit có dấu |
int64 | Số nguyên 64 bit có dấu |
uint | Số nguyên không dấu ít nhất 32 bit |
int | Số nguyên ít nhất 32 bit |
uintptr | Tương đương số nguyên 64 bit không dấu, nhưng chuyên dùng để lưu trữ phép toán con trỏ, dùng để lưu địa chỉ con trỏ chết. |
Kiểu số dấu phẩy động
Số dấu phẩy động IEEE-754, chủ yếu chia thành số dấu phẩy động đơn精度 và số dấu phẩy động kép精度.
| Kiểu | Mô tả |
|---|---|
float32 | Số dấu phẩy động 32 bit IEEE-754 |
float64 | Số dấu phẩy động 64 bit IEEE-754 |
Kiểu số phức
| Kiểu | Mô tả |
|---|---|
complex128 | Số thực và số ảo 64 bit |
complex64 | Số thực và số ảo 32 bit |
Kiểu ký tự
Chuỗi trong ngôn ngữ Go hoàn toàn tương thích UTF-8
| Kiểu | Mô tả |
|---|---|
byte | Tương đương uint8 có thể biểu thị ký tự ANSCII |
rune | Tương đương int32 có thể biểu thị ký tự Unicode |
string | Chuỗi là dãy byte, có thể chuyển đổi thành kiểu []byte tức là slice byte |
Kiểu phái sinh
| Kiểu | Ví dụ |
|---|---|
| Mảng | [5]int, mảng số nguyên độ dài 5 |
| Slice | []float64, slice số dấu phẩy động 64 bit |
| Map | map[string]int, map có khóa kiểu chuỗi, giá trị kiểu số nguyên |
| Struct | type Gopher struct{}, struct Gopher |
| Con trỏ | *int, một con trỏ số nguyên. |
| Hàm | type f func(), một kiểu hàm không có tham số, không có giá trị trả về |
| Interface | type Gopher interface{}, interface Gopher |
| Kênh | chan int, kênh số nguyên |
Giá trị 0
Trong tài liệu chính thức, giá trị 0 được gọi là zero value, giá trị 0 không chỉ đơn thuần là số 0 theo nghĩa đen, mà chính xác hơn là giá trị rỗng hoặc giá trị mặc định của một kiểu.
| Kiểu | Giá trị 0 |
|---|---|
| Kiểu số | 0 |
| Kiểu boolean | false |
| Kiểu chuỗi | "" |
| Mảng | Tập hợp các giá trị 0 của kiểu tương ứng với độ dài cố định |
| Struct | Struct mà các trường bên trong đều là giá trị 0 |
| Slice, map, hàm, interface, kênh, con trỏ | nil |
nil
nil tương tự như none hoặc null trong các ngôn ngữ khác, nhưng không tương đương. nil chỉ là giá trị 0 của một số kiểu tham chiếu, và không thuộc bất kỳ kiểu nào, từ mã nguồn có thể thấy nil chỉ là một biến.
var nil TypeVà câu lệnh nil == nil như vậy không thể biên dịch được.
