Scroll to top
Shadowed variable

Shadowed variable

ByYuto 11/10/2024 20:43
2min read

shadow nghĩa là "cái bóng", còn ==shadowed== có nghĩa là "che khuất". Trong lập trình thì shadowed variable nghĩa là hiện tượng một biến ở scope bên ngoài bị che khuất do có một biến cùng tên được khai báo trong scope nhỏ hơn.

Định nghĩa về Shadowed variable

shadow nghĩa là cái bóng, còn shadowed có nghĩa là che khuất. Trong lập trình thì shadowed variable nghĩa là hiện tượng một biến ở scope bên ngoài bị che khuất do có một biến cùng tên được khai báo trong scope nhỏ hơn.

Scope nghĩa là vùng ảnh hưởng của biến, là phạm vi nằm trong cặp dấu ngoặc nhọn {}

Ví dụ về Shadowed variable

go
Copy
1
2
3
4
5
6
7
8
9
10
11
12
package main

import "fmt"

func main() {
    n := 1000
    if true {
        n := 1
        n--
    }
    fmt.Println(n)
}

Ở ví dụ này, thoạt nhìn có thể chúng ta sẽ nhầm tưởng kết quả chương trình trả về là 0, bởi vì trong khối lệnh if chúng ta khai báo n := 1 và sau đó trừ đi 1 nên tưởng là sẽ bằng 0.

Tuy nhiên khi chạy chương trình thì kết quả sẽ là 1000.

Giải thích

Ở ví dụ trên, chúng ta đã khai báo biến n ở dòng thứ 6 và gán giá trị 1000, sau đó ở dòng thứ 8 chúng ta lại khai báo một biến trùng tên n, và gán giá trị 1.

Trong trường hợp này biến n được khai báo ở bên ngoài khối lệnh if sẽ bị che khuất, do đó tất cả những xử lý với biến n bên trong khối lệnh if sẽ chỉ tác dụng với biến n được khai báo bên trong khối lệnh này thôi. Tiếp theo ở dòng thứ 11, chúng ta in ra giá trị của n, và n ở đây chính là biến n chúng ta khai báo và gán giá trị là 1000 ở dòng thứ 6

Để tránh những sai xót không đáng có, chúng ta có thể dùng những Linting tool như golangci-lint hoặc go vet để tự động kiểm tra lỗi nhé.

Đánh giá bài viết: 4.9/5 (47 đánh giá)
Bạn chưa đánh giá

Bình luận

Author
hoclaptrinh.io author
Tác giả:Yuto Yasunaga

Mình là một full stack developer, tốt nghiệp và làm việc tại Nhật Bản. Trang web này là nơi mình tổng hợp, đúc kết và lưu trữ lại những kiến thức trong quá trình học và làm việc liên quan đến IT.
Hy vọng những bài viết ở website này sẽ có ích cho bạn.