Mảng - Array trong ngôn ngữ lập trình Golang hay Go khá giống với các ngôn ngữ lập trình khác. Dưới đây là những điều bạn cần biết về mảng trong Golang.
Trong chương trình, đôi khi chúng ta cần lưu trữ một tập hợp dữ liệu cùng loại, như danh sách điểm của học sinh. Kiểu tập hợp như vậy được lưu trữ trong chương trình bằng cách sử dụng Mảng. Mảng là một chuỗi có độ dài cố định được sử dụng để lưu trữ các phần tử đồng nhất trong bộ nhớ. Do có độ dài cố định nên mảng không phổ biến như Slice trong ngôn ngữ Go. Trong một mảng, bạn được phép lưu trữ 0 hoặc nhiều hơn 0 phần tử trong đó. Các phần tử của mảng được lập chỉ mục bằng cách sử dụng toán tử chỉ mục [] với vị trí bắt đầu từ 0 của chúng, nghĩa là chỉ mục của phần tử đầu tiên là mảng [0] và chỉ mục của phần tử cuối cùng là mảng [len (mảng) - 1].
Tạo và truy cập một Mảng
Trong ngôn ngữ Go, mảng được tạo theo hai cách khác nhau:
Sử dụng từ khóa var: Trong ngôn ngữ Go, mảng được tạo bằng từ khóa var của một kiểu cụ thể với tên, kích thước và phần tử. Cú pháp:
Var array_name[length]Type
Lưu ý quan trọng:
Trong ngôn ngữ Go, mảng có thể thay đổi, do đó bạn có thể sử dụng cú pháp array[index] ở phía bên trái của phép gán để đặt các phần tử của mảng tại chỉ mục đã cho.
Var array_name[index] = element
- Bạn có thể truy cập các phần tử của mảng bằng cách sử dụng giá trị chỉ mục hoặc bằng cách sử dụng vòng lặp for.
- Trong ngôn ngữ Go, kiểu mảng là một chiều.
- Độ dài của mảng là cố định và không thể thay đổi.
- Bạn được phép lưu trữ các phần tử trùng lặp trong một mảng.
Cách tiếp cận 1: Sử dụng khai báo viết tắt:
Trong ngôn ngữ Go, mảng cũng có thể khai báo bằng cách sử dụng khai báo viết tắt. Nó linh hoạt hơn so với khai báo ở trên.
Cú pháp:
array_name:= [length]Type{item1, item2, item3,...itemN}
Ví dụ:
// Chương trình Go minh họa cách tạo
//một mảng sử dụng khai báo viết tắt
// và truy cập vào các yếu tố của
// mảng bằng vòng lặp for
package main
import "fmt"
func main() {
// Khai báo viết tắt của mảng
arr:= [4]string{"geek", "gfg", "Geeks1231", "GeeksforGeeks"}
// Truy cập các phần tử của
//mảng dùng vòng lặp for
fmt.Println("Elements of the array:")
for i:= 0; i < 3; i++{
fmt.Println(arr[i])
}
}
Kết quả:
Elements of the array:
geek
gfg
Geeks1231
Mảng đa chiều
Như chúng ta đã biết, mảng là 1 chiều nhưng bạn được phép tạo mảng đa chiều trong Golang. Mảng đa chiều là mảng của các mảng cùng loại. Trong ngôn ngữ Go, bạn có thể tạo mảng đa chiều bằng cú pháp sau:
Array_name[Length1][Length2]..[LengthN]Type
Bạn có thể tạo một mảng đa chiều bằng cách sử dụng từ khóa Var hoặc sử dụng khai báo viết tắt như trong ví dụ dưới đây.
Lưu ý: Trong mảng đa chiều, nếu một ô không được người dùng khởi tạo bằng một giá trị nào đó, thì nó sẽ tự động được trình biên dịch khởi tạo bằng số không. Không có khái niệm nào chưa được khởi tạo trong Golang.
Ví dụ:
// Go program to illustrate the
// concept of multi-dimension array
package main
import "fmt"
func main() {
// Creating and initializing
// 2-dimensional array
// Using shorthand declaration
// Here the (,) Comma is necessary
arr := [3][3]string{{"C #", "C", "Python"}, {"Java", "Scala", "Perl"},
{"C++", "Go", "HTML"}}
// Accessing the values of the
// array Using for loop
fmt.Println("Elements of Array 1")
for x := 0; x < 3; x++ {
for y := 0; y < 3; y++ {
fmt.Println(arr[x][y])
}
}
// Tạo mảng 2 chiều
// bằng từ khóa var
// và khởi tạo
// -một mảng đa chiều bằng index
var arr1 [2][2]int
arr1[0][0] = 100
arr1[0][1] = 200
arr1[1][0] = 300
arr1[1][1] = 400
// Truy cập các giá trị của mảng
fmt.Println("Elements of array 2")
for p := 0; p < 2; p++ {
for q := 0; q < 2; q++ {
fmt.Println(arr1[p][q])
}
}
}
Kết quả:
Elements of Array 1
C#
C
Python
Java
Scala
Perl
C++
Go
HTML
Elements of array 2
100
200
300
400
Lưu ý quan trọng về mảng trong Golang:
Trong một mảng, nếu một mảng không được khởi tạo rõ ràng, thì giá trị mặc định của nó bằng 0.
Ví dụ:
// Chương trình Go minh họa một mảng
package main
import "fmt"
func main() {
// Tạo một mảng kiểu int
// chứa 2 thành phần
// Tại đây chúng ta không khởi tạo
//mảng, vì thế giá trị của mảng
// bằng 0
var myarr [2]int
// In mảng
fmt.Println("Elements of the Array: ", myarr)
}
Kết quả:
Elements of the Array : [0 0]
Trong một mảng, bạn có thể tìm độ dài của mảng bằng phương thức len() như được hiển thị bên dưới:
Ví dụ:
// Chương trình Go minh họa cách tìm
// chiều dài của mảng
package main
import "fmt"
func main() {
// Tạo mảng
// bằng khai báo viết tắt
arr1:= [3]int{9,7,6}
arr2:= [...]int{9,7,6,4,5,3,2,4}
arr3:= [3]int{9,3,5}
// Tìm chiều dài của
// mảng bằng phương thức len
fmt.Println("Length of the array 1 is:", len(arr1))
fmt.Println("Length of the array 2 is:", len(arr2))
fmt.Println("Length of the array 3 is:", len(arr3))
}
Kết quả
Length of the array 1 is: 3
Length of the array 2 is: 8
Length of the array 3 is: 3
Trong một mảng, nếu dấu ba chấm ‘‘…’’ xuất hiện ở vị trí length, thì độ dài của mảng được xác định bởi các phần tử được khởi tạo. Như thể hiện trong ví dụ bên dưới:
Ví dụ:
// Chương trình Go minh họa
// khái niệm ba chấm trong một mảng
package main
import "fmt"
func main() {
// Tạo mảng có kích thước đã được xác định
// bởi số phần tử nằm ở bên trong
// Dùng ellipsis
myarray:= [...]string{"GFG", "gfg", "geeks",
"GeeksforGeeks", "GEEK"}
fmt.Println("Elements of the array: ", myarray)
// Chiều dài của mảng
// được quyết định bởi
// Dùng phương thức len() method
fmt.Println("Length of the array is:", len(myarray))
}
Kết quả:
Elements of the array: [GFG gfg geeks GeeksforGeeks GEEK]
Length of the array is: 5