Giới thiệu
Trong bài viết này, chúng ta sẽ khám phá những cấu trúc biến quan trọng trong Golang, bao gồm Con Trỏ (Pointer), Cấu Trúc (Struct), Slice và Bản Đồ (Map). Đây là những khái niệm cơ bản và thường xuyên được sử dụng trong các bài toán lập trình thực tế. Bài viết sẽ có phần dài, vì vậy hãy chuẩn bị để tiếp thu những kiến thức hữu ích nào! 😄
Nội dung
1. Con Trỏ (Pointer)
Con trỏ là một trong những khái niệm quan trọng mà những ai đã từng học ngôn ngữ lập trình C/C++ đều biết. Con trỏ không lưu trữ giá trị cụ thể mà thay vào đó lưu trữ địa chỉ của một biến trong bộ nhớ RAM.
Khai báo Con Trỏ
-
Khai báo con trỏ mà không gán địa chỉ:
gofunc main() { var p *int fmt.Println("p = ", p) // Output: p = <nil> }
-
Khai báo và gán địa chỉ:
govar i = 10 var p = &i // p lưu địa chỉ của biến i
-
Truy cập giá trị qua Con Trỏ:
gofmt.Println(*p) // Hiển thị giá trị của i thông qua p *p = 21 // Thay đổi giá trị của i thông qua p
Ví dụ tổng quát:
go
package main
import "fmt"
func main() {
var a = 10
var p = &a
fmt.Println("a = ", a) // 10
fmt.Println("p = ", p) // Địa chỉ của a
fmt.Println("*p = ", *p) // 10
*p = 20
fmt.Println("a (after) = ", a) // 20
}
Kết quả:
a = 10
p = 0xc00001d0d0
*p = 10
a (after) = 20
2. Cấu Trúc (Struct)
Cấu trúc là một tập hợp các trường dữ liệu, cho phép bạn nhóm các loại dữ liệu lại với nhau.
Ví dụ về Cấu Trúc:
go
package main
import "fmt"
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
fmt.Println(v) // Output: {1 2}
}
Truy cập các trường của Cấu Trúc:
go
v.X = 4 // Thay đổi giá trị của X
fmt.Println(v.X) // Output: 4
Con Trỏ đến Cấu Trúc:
go
p := &v
p.X = 3
fmt.Println(v) // Output: {3 2}
3. Mảng (Arrays)
Mảng trong Go được khai báo với cú pháp: [n]T
, nơi n
là số lượng phần tử và T
là kiểu dữ liệu. Độ dài mảng không thể thay đổi.
Ví dụ về Mảng:
go
package main
import "fmt"
func main() {
var a [2]string
a[0] = "Hello"
a[1] = "Golang"
fmt.Println(a) // Output: [Hello Golang]
}
4. Slice
Slice là một mảng có kích thước linh hoạt, cho phép bạn thao tác với một phần của mảng.
Khai báo Slice:
go
primes := [6]int{2, 3, 5, 7, 11, 13}
var s []int = primes[1:4]
fmt.Println(s) // Output: [3 5 7]
Thay đổi phần tử trong Slice:
go
b[0] = "XXX"
5. Bản Đồ (Maps)
Bản đồ là kiểu dữ liệu cho phép ánh xạ giữa khóa và giá trị. Mỗi khóa trong bản đồ là duy nhất.
Khai báo và sử dụng Bản Đồ:
go
ages := make(map[string]int)
ages["Alice"] = 30
fmt.Println("Tuổi của Alice là:", ages["Alice"])
Kết luận
Bài viết này đã cung cấp cho bạn cái nhìn tổng quan về các khái niệm Con Trỏ, Cấu Trúc, Mảng, Slice và Bản Đồ trong Golang. Hy vọng rằng những kiến thức này sẽ giúp ích cho bạn trong hành trình học tập ngôn ngữ lập trình Golang. Trong bài tiếp theo, chúng ta sẽ khám phá về Methods và Interfaces. Nếu bạn có câu hỏi hay ý kiến đóng góp, hãy để lại comment bên dưới nhé! Hẹn gặp lại trong các bài viết tiếp theo của series Golang Essentials: Nền Tảng và Kiến Thức Cơ Bản!
source: viblo