Go - Các Kiểu Dữ Liệu: Hướng Dẫn Dễ Dàng Cho Người Mới Bắt Đầu
Xin chào các bạn đang theo đuổi lập trình! Bạn đã sẵn sàng lặn sâu vào thế giới kỳ diệu của lập trình Go chưa? Hôm nay, chúng ta sẽ khám phá một trong những khái niệm cơ bản của Go: các kiểu dữ liệu. Đừng lo nếu bạn chưa từng viết một dòng mã trước đây - tôi sẽ hướng dẫn bạn từng bước, như tôi đã làm cho hàng trăm học viên trong những năm dạy học của mình. Hãy bắt đầu nào!
Các Kiểu Dữ Liệu Là Gì?
Trước khi chúng ta nhảy vào chi tiết, hãy hiểu về các kiểu dữ liệu. Hãy tưởng tượng bạn đang tổ chức một bữa tiệc lớn (thật vui phải không?). Bạn cần theo dõi thông tin khác nhau:
- Số lượng khách (một số nguyên)
- Chi phí thức ăn trên mỗi người (một số có dấu phẩy động)
- Có phải là bữa tiệc bất ngờ hay không (Có hoặc Không)
- Tên của khách quý (một chuỗi ký tự)
Trong lập trình, chúng ta sử dụng các kiểu dữ liệu khác nhau để biểu diễn các loại thông tin này. Go, với sự chu đáo của mình, cung cấp cho chúng ta nhiều kiểu dữ liệu để làm việc.
Các Kiểu Số Nguyên
Hãy bắt đầu với các kiểu số nguyên. Chúng được sử dụng cho các số nguyên, như số lượng khách tại tiệc của chúng ta.
Các Kiểu Số Nguyên Cơ Bản
Go cung cấp nhiều kiểu số nguyên, khác nhau về kích thước và khả năng biểu diễn số âm:
Kiểu | Kích thước (bit) | Phạm vi |
---|---|---|
int8 | 8 | -128 đến 127 |
int16 | 16 | -32,768 đến 32,767 |
int32 | 32 | -2,147,483,648 đến 2,147,483,647 |
int64 | 64 | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 |
uint8 | 8 | 0 đến 255 |
uint16 | 16 | 0 đến 65,535 |
uint32 | 32 | 0 đến 4,294,967,295 |
uint64 | 64 | 0 đến 18,446,744,073,709,551,615 |
Hãy xem chúng ta có thể sử dụng chúng như thế nào trong mã của mình:
package main
import "fmt"
func main() {
var partyGuests int = 50
var smallPartyGuests int8 = 10
var hugePartyGuests uint64 = 1000000
fmt.Println("Regular party guests:", partyGuests)
fmt.Println("Small party guests:", smallPartyGuests)
fmt.Println("Huge party guests:", hugePartyGuests)
}
Trong ví dụ này, chúng ta đang khai báo các biến để lưu trữ số lượng khách cho các loại tiệc khác nhau. Kiểu int
được sử dụng cho tiệc bình thường, int8
cho buổi tiệc nhỏ (vì chúng ta biết nó sẽ không vượt quá 127), và uint64
cho buổi lễ lớn (chỉ trong trường hợp chúng ta đang lên kế hoạch cho một sự kiện toàn thành phố!).
Các Kiểu 'int' và 'uint'
Go cũng cung cấp các kiểu int
và uint
, có ít nhất 32 bit nhưng có thể lớn hơn tùy thuộc vào hệ thống. Chúng thường là lựa chọn tiện lợi nhất khi bạn không cần một kích thước cụ thể.
var flexibleNumber int = 42
var positiveFlexibleNumber uint = 42
Ở đây, flexibleNumber
có thể là số dương hoặc âm, trong khi positiveFlexibleNumber
luôn là số không âm.
Các Kiểu Số FLOAT
Bây giờ, hãy nói về các số float. Chúng được sử dụng cho các số có dấu phẩy động, như chi phí trên mỗi người cho thức ăn tiệc của chúng ta.
Go cung cấp hai kiểu số float:
Kiểu | Kích thước (bit) | Độ chính xác |
---|---|---|
float32 | 32 | Khoảng 7 chữ số thập phân |
float64 | 64 | Khoảng 15 chữ số thập phân |
Hãy xem chúng trong hành động:
package main
import "fmt"
func main() {
var costPerPerson float32 = 15.50
var totalBudget float64 = 1000.75
fmt.Printf("Cost per person: $%.2f\n", costPerPerson)
fmt.Printf("Total budget: $%.2f\n", totalBudget)
}
Trong ví dụ này, chúng ta sử dụng float32
cho chi phí trên mỗi người (vì chúng ta không cần độ chính xác极端) và float64
cho ngân sách tổng thể (nơi chúng ta có thể muốn nhiều chữ số thập phân cho các phép toán chính xác).
Phần %.2f
trong Printf
cho biết Go hiển thị số float với hai chữ số thập phân.
Các Kiểu Số Khác
Go cung cấp một vài kiểu số khác nữa, rất hữu ích trong các tình huống cụ thể.
Số Phức
Đúng vậy, Go có thể xử lý số phức! Nó cung cấp hai kiểu:
Kiểu | Mô tả |
---|---|
complex64 | Số phức với phần thực và ảo float32 |
complex128 | Số phức với phần thực và ảo float64 |
Dưới đây là một ví dụ nhanh:
package main
import "fmt"
func main() {
var c64 complex64 = 1 + 2i
var c128 complex128 = 3 + 4i
fmt.Println("Complex64:", c64)
fmt.Println("Complex128:", c128)
}
Mặc dù bạn có thể không sử dụng số phức thường xuyên, nhưng biết rằng Go hỗ trợ chúng nếu bạn cần!
Byte và Rune
Go cũng có hai别名 cho các kiểu số nguyên được sử dụng trong các ngữ cảnh cụ thể:
Kiểu | Alias cho | Sử dụng thông thường |
---|---|---|
byte | uint8 | Đại diện cho một byte dữ liệu |
rune | int32 | Đại diện cho một điểm mã Unicode |
Dưới đây là cách bạn có thể sử dụng chúng:
package main
import "fmt"
func main() {
var b byte = 65
var r rune = 'A'
fmt.Printf("Byte %d represents: %c\n", b, b)
fmt.Printf("Rune %d represents: %c\n", r, r)
}
Trong ví dụ này, cả b
và r
đại diện cho chữ cái 'A', nhưng theo cách khác nhau. b
sử dụng giá trị ASCII, trong khi r
sử dụng điểm mã Unicode.
Kết Luận
Uf! Chúng ta đã đi qua rất nhiều nội dung hôm nay. Từ số nguyên đến số float, và thậm chí là số phức, Go cung cấp một bộ dữ liệu phong phú để làm việc. Hãy nhớ rằng việc chọn đúng kiểu dữ liệu giống như việc chọn đúng công cụ cho công việc - nó có thể làm cho mã của bạn hiệu quả hơn và tránh được lỗi.
Khi bạn tiếp tục hành trình với Go, bạn sẽ dần quen thuộc với các kiểu này và học cách sử dụng chúng khi cần. Đừng lo nếu cảm thấy quá tải ban đầu - điều đó hoàn toàn bình thường! Giống như việc học骑自行车, nó cần thời gian để tập luyện, nhưng trước khi bạn biết, bạn sẽ zip qua mã Go như một chuyên gia.
Tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! Cuối cùng, lập trình cũng giống như việc tổ chức một bữa tiệc hoàn hảo - nó là về việc kết hợp đúng các yếu tố để tạo ra điều kỳ diệu. Chúc bạn lập trình vui vẻ!
Credits: Image by storyset