Hướng dẫn chi tiết về Mảng trong Go cho người mới bắt đầu

Xin chào các bạn đang học Go! Tôi rất vui mừng được dẫn dắt các bạn vào thế giới của mảng trong Go. Với kinh nghiệm dạy lập trình nhiều năm, tôi có thể đảm bảo rằng việc hiểu rõ mảng là rất quan trọng cho hành trình lập trình của bạn. Hãy cùng bắt đầu nhé!

Go - Arrays

Mảng là gì?

Trước khi chúng ta bắt đầu, hãy tưởng tượng bạn đang sắp xếp một kệ sách. Bạn có một số lượng cố định các ngăn, và mỗi ngăn có thể chứa một cuốn sách. Đó chính là bản chất của mảng trong lập trình - một bộ sưu tập có kích thước cố định các phần tử cùng loại.

Khai báo mảng

Trong Go, khai báo một mảng giống như nói với máy tính, "Này, tôi cần một số lượng cố định các ngăn để lưu trữ một số vật phẩm." Dưới đây là cách chúng ta làm điều đó:

var bookshelf [5]string

Dòng này tạo ra một mảng叫做 bookshelf có thể chứa 5 chuỗi. Nó giống như việc thiết lập một kệ sách với 5 ngăn, mỗi ngăn có thể chứa một tựa sách.

Nhưng đợi đã, còn nhiều hơn thế! Chúng ta có thể khai báo các mảng khác nhau về loại và kích thước:

var scores [3]int
var temperatures [7]float64
var flags [2]bool

Lưu ý, một khi bạn đã khai báo một mảng với kích thước cụ thể, kích thước đó sẽ không thay đổi. Nó giống như việc xây dựng một kệ sách - một khi đã xây xong, bạn không thể đột ngột thêm hoặc bớt các ngăn!

Khởi tạo mảng

Bây giờ chúng ta đã có mảng của mình, hãy đặt một số sách lên kệ! Có nhiều cách để làm điều này:

Phương pháp 1: Khởi tạo trong quá trình khai báo

var fruits [3]string = [3]string{"apple", "banana", "cherry"}

Ở đây, chúng ta đang tạo một bát quả với ba loại quả cụ thể đã có sẵn.

Phương pháp 2: Khai báo ngắn

colors := [4]string{"red", "blue", "green", "yellow"}

Đây là cách nhanh chóng để khai báo và khởi tạo một mảng trong một bước. Nó giống như việc nhanh chóng sắp xếp một bộ màu sơn.

Phương pháp 3: Khởi tạo một phần

var numbers [5]int = [5]int{1, 2, 3}

Trong trường hợp này, chúng ta chỉ xác định ba số đầu tiên. Go sẽ tự động điền phần còn lại bằng không. Nó giống như việc có một kế hoạch 5 ngày mà bạn chỉ lên kế hoạch cho ba ngày đầu tiên.

Phương pháp 4: Để Go tự xác định kích thước

animals := [...]string{"dog", "cat", "hamster", "fish"}

Bằng cách sử dụng ..., chúng ta đang nói với Go, "Đếm giúp tôi nhé?" Go sẽ tạo một mảng với chính xác số lượng phần tử.

Truy cập phần tử mảng

Bây giờ, làm thế nào chúng ta thực sự sử dụng các mảng này? Chúng ta truy cập các phần tử bằng cách sử dụng chỉ số, bắt đầu từ 0 (tôi biết, nó có vẻ kỳ lạ ban đầu, nhưng bạn sẽ quen với nó!):

fruits := [3]string{"apple", "banana", "cherry"}
fmt.Println(fruits[0]) // Xuất: apple
fmt.Println(fruits[1]) // Xuất: banana
fmt.Println(fruits[2]) // Xuất: cherry

Hãy tưởng tượng như này: trong một kệ sách, cuốn sách đầu tiên ở vị trí 0, cuốn thứ hai ở vị trí 1, và vân vân.

Chúng ta cũng có thể thay đổi các phần tử:

fruits[1] = "blueberry"
fmt.Println(fruits) // Xuất: [apple blueberry cherry]

Chúng ta vừa thay đổi chuối thành dâu tây!

Mảng trong Go chi tiết

Bây giờ chúng ta đã覆盖 cơ bản, hãy cùng đi sâu hơn một chút.

Độ dài mảng

Để biết có bao nhiêu phần tử trong một mảng, chúng ta sử dụng hàm len():

numbers := [4]int{2, 4, 6, 8}
fmt.Println(len(numbers)) // Xuất: 4

Nó giống như việc hỏi, "Có bao nhiêu cuốn sách trên kệ này?"

Lặp qua các phần tử của mảng

Thường xuyên, chúng ta muốn thực hiện một hành động với mỗi phần tử trong mảng. Chúng ta có thể sử dụng vòng lặp for để làm điều này:

colors := [4]string{"red", "blue", "green", "yellow"}
for i := 0; i < len(colors); i++ {
fmt.Printf("Color %d is %s\n", i+1, colors[i])
}

Điều này sẽ in ra:

Color 1 is red
Color 2 is blue
Color 3 is green
Color 4 is yellow

Nó giống như việc đi qua kệ sách và đọc tựa sách của mỗi cuốn.

Mảng đa chiều

Đôi khi, chúng ta cần tổ chức dữ liệu theo cách phức tạp hơn. Đó là khi đa chiều mảng xuất hiện! Hãy tưởng tượng chúng như các mảng trong mảng:

matrix := [3][3]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}

Điều này tạo ra một lưới 3x3, giống như một bảng nhỏ hoặc một bảng cờ caro.

Để truy cập các phần tử trong một mảng đa chiều:

fmt.Println(matrix[1][2]) // Xuất: 6

Điều này truy cập phần tử ở hàng thứ hai (chỉ số 1) và cột thứ ba (chỉ số 2).

Phương thức mảng trong Go

Dưới đây là bảng các thao tác phổ biến bạn có thể thực hiện với mảng trong Go:

Thao tác Mô tả Ví dụ
Khai báo Tạo một mảng var arr [5]int
Khởi tạo Đặt giá trị ban đầu arr := [3]int{1, 2, 3}
Truy cập Lấy một phần tử cụ thể element := arr[2]
Thay đổi Thay đổi một phần tử arr[1] = 10
Độ dài Lấy kích thước của mảng len(arr)
Lặp qua Lặp qua các phần tử for i := 0; i < len(arr); i++ { ... }
Sao chép Tạo một bản sao mới newArr := arr

Lưu ý, khác với một số ngôn ngữ lập trình khác, Go không có phương thức内置 cho các thao tác như push, pop hoặc slice. Để thực hiện các thao tác linh hoạt hơn, bạn thường sử dụng slices, mà chúng ta sẽ thảo luận trong bài học tiếp theo!

Kết luận

Chúc mừng! Bạn vừa迈出第一步进入 Go 语言中的数组世界。我们已经覆盖了如何声明它们、初始化 chúng, truy cập các phần tử và thậm chí đã thử nghiệm với các mảng đa chiều.

Lưu ý, các mảng trong Go có kích thước cố định, điều này làm cho chúng rất hữu ích khi bạn biết chính xác số lượng phần tử bạn cần. Chúng giống như kệ sách đáng tin cậy trong phòng của bạn - đáng tin cậy, không thay đổi và luôn ở đó khi bạn cần chúng.

Tiếp tục thực hành, giữ vững sự tò mò và quan trọng nhất, hãy vui vẻ khi lập trình! Trong bài học tiếp theo, chúng ta sẽ khám phá slices - người anh em linh hoạt hơn của mảng trong Go. Đến那时, chúc các bạn lập trình vui vẻ!

Credits: Image by storyset