Những điều cơ bản về phạm vi của hàm
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 58 trên 109.
Trong Go, các biến được khai báo bên trong một hàm chỉ có thể truy cập trong hàm đó. Phạm vi này được gọi là phạm vi hàm.
Tạo một hàm có biến cục bộ:
func calculateTotal(price int, quantity int) int {
tax := 0.1 * float64(price * quantity) // biến cục bộ
total := price * quantity + int(tax)
return total
}
func main() {
result := calculateTotal(10, 2)
fmt.Println("Total:", result)
// fmt.Println(tax) // Lỗi: không thể truy cập tax ở đây
}Đầu ra chỉ hiển thị giá trị trả về:
Total: 22Biến tax chỉ tồn tại bên trong hàm calculateTotal và không thể được truy cập từ main.
Thử thách
Người mớiTrong thử thách này, bạn sẽ luyện cách hiểu phạm vi (scope) của hàm (function) trong Go. Bạn cần sửa một chương trình đơn giản có vấn đề về phạm vi.
Chương trình có một biến toàn cục message và một hàm cố gắng sửa biến đó. Nhiệm vụ của bạn là sửa code để hàm cập nhật đúng biến toàn cục.
Tự làm thử
package main
import "fmt"
// Biến toàn cục
var message string = "Hello from global scope"
func updateMessage() {
// Thao tác này tạo biến cục bộ mới thay vì thay đổi biến toàn cục
message := "Hello from function scope"
fmt.Println("Inside function:", message)
}
func main() {
fmt.Println("Before function call:", message)
updateMessage()
// TODO: Biến message toàn cục vẫn giữ giá trị ban đầu
// Sửa hàm updateMessage() để thay đổi biến toàn cục
fmt.Println("After function call:", message)
}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 địnhTự luyện tập: Trình biên dịch Go online