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!

Go - Data Types

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 intuint, 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ả br đạ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