Khai báo biến con trỏ
Thuộc phần Kiến thức nền tảng trong hành trình GO của Coddy. Bài học 61 trên 109.
Trong Go, bạn có thể khai báo con trỏ theo hai cách chính: dùng var với kiểu con trỏ hoặc dùng toán tử địa chỉ với :=.
Khai báo con trỏ bằng var với kiểu con trỏ:
func main() {
var x int = 42
var ptr *int // Khai báo con trỏ trỏ đến một số nguyên (integer)
ptr = &x // Gán địa chỉ của x cho ptr
fmt.Println("Value of x:", x)
fmt.Println("Value of ptr:", ptr)
fmt.Println("Value at ptr:", *ptr)
}Kết quả đầu ra cho thấy con trỏ lưu địa chỉ của x:
Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42Bạn cũng có thể khai báo và khởi tạo con trỏ trên cùng một dòng bằng :=:
y := 100
ptr := &y // Khai báo và khởi tạo con trỏ trong một bướcThử thách
Người mớiTrong thử thách này, bạn sẽ luyện tập khai báo và sử dụng con trỏ trong Go. Một con trỏ đã được thiết lập sẵn, nhiệm vụ của bạn là tạo một con trỏ mới trỏ đến cùng một giá trị.
Hoàn thành TODO trong code để khai báo một biến con trỏ mới có tên 'secondPointer', trỏ đến cùng địa chỉ bộ nhớ với con trỏ hiện có.
Tự làm thử
package main
import "fmt"
func main() {
// Đây là một biến (variable) và một con trỏ trỏ đến biến đó
originalValue := 42
pointerToValue := &originalValue
// TODO: Khai báo một biến con trỏ mới tên là 'secondPointer'
// trỏ đến cùng địa chỉ bộ nhớ với 'pointerToValue'
// Đừng sửa đoạn code bên dưới
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
// Thử thay đổi giá trị ban đầu và xem tất cả con trỏ phản ánh thay đổi đó
originalValue = 100
fmt.Printf("\nAfter changing original value to 100:\n")
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
4Toán tử so sánh và logic
Toán tử so sánh, phần 1Toán tử so sánh, phần 2Toán tử AND logicToán tử OR logicToán tử NOT logicCơ bản về thứ tự ưu tiên của toán tửÔn tập: thực hiện phép so sánh7Luồng điều khiển: vòng lặp
Giải thích vòng lặp `for`Vòng lặp `for` cơ bảnVòng lặp `for` chỉ có điều kiệnTừ khóa `break`Từ khóa `continue`Vòng lặp lồng nhauÔn tập: lặp lại hành động2Biến và các kiểu dữ liệu cơ bản
Biến là gìSuy luận kiểu với `:=`Số nguyên (int)Số dấu phẩy độngGiá trị BooleanChuỗiGiá trị 0Hằng sốQuy ước đặt tênÔn tập: biến và kiểu dữ liệu5Đầu vào/đầu ra cơ bản
Đầu ra có định dạngĐộng từ định dạngIn các kiểu dữ liệuNhận đầu vào cơ bản từ người dùngÔn tập: đầu vào và đầu ra8Hàm
Tìm hiểu về hàmKhai báo hàmGọi hàmTham số của hàmTrả về một giá trịTrả về nhiều giá trịGiá trị trả về có tênNhững điều cơ bản về phạm vi của hàmÔn tập: Tạo code có thể tái sử dụng3Toán tử cơ bản
Toán tử số họcToán tử chiaToán tử moduloToán tử gánToán tử gán kết hợpTăng và giảmÔn tập: Tính toán6Luồng điều khiển: câu lệnh điều kiện
Câu lệnh `if`Từ khóa `else`Từ khóa `else if`Biến bị che khuất trong `if`Khởi tạo biếnCâu lệnh `switch``switch` có biểu thức`switch` không có biểu thứcTừ khóa `fallthrough`Ôn tập: đưa ra quyết định9Con trỏ
Con trỏ là gì?Khai báo biến con trỏToán tử lấy địa chỉGiải tham chiếu con trỏDùng con trỏ trong hàmCon trỏ nilÔn tập: Tìm hiểu về con trỏTự luyện tập: Trình biên dịch Go online