Scroll to top
Khai báo nhưng không dùng đến

Khai báo nhưng không dùng đến

ByAdmin 2022-12-18 18:08
3 min read

Trong một số ngôn ngữ lập trình khác, ví dụ như Ruby, JavaScript, khi chúng ta khai báo biến nhưng không sử dụng trong chương trình thì cũng không vấn đề gì, cùng lắm thì IDE, Linting tools chỉ hiện cảnh báo.
Tuy nhiên trong ngôn ngữ lập trình Go, biến được khai báo nhưng không sử dụng thì chương trình sẽ báo lỗi và không chạy được.

Mở đầu

Trong một số ngôn ngữ lập trình khác, ví dụ như Ruby, JavaScript, khi chúng ta khai báo biến nhưng không sử dụng trong chương trình thì cũng không vấn đề gì, cùng lắm thì IDE, Linting tools chỉ hiện cảnh báo.

Tuy nhiên trong ngôn ngữ lập trình Go, biến được khai báo nhưng không sử dụng thì chương trình sẽ báo lỗi và không chạy được, như ví dụ bên dưới.

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

import "fmt"

func main() {
    str := "Hello"
    fmt.Println("World")
}

// Error: str declared but not used

Cá nhân mình lúc mới bắt đầu học Go thì thấy cái này khá là bất tiện, tuy nhiên khi đã quen dần thì mình lại thấy rất có ý nghĩa, bởi vì biến khai báo nhưng không sử dụng thì sẽ tốn bộ nhớ và làm chương trình thêm phần phức tạp hơn.

Sử dụng dấu gạch dưới _ để khai báo biến không sử dụng

Trong một số trường hợp, chúng ta có thể khai báo biến tuy nhiên không sử dụng đến nó. Ví dụ như trong chương trình dưới đây

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

import "fmt"

func main() {
    success, msg := greetingMsg()
    fmt.Println(msg)
}

func greetingMsg() (bool, string) {
    return true, "Hello world!"
}

// Báo lỗi

Chương trình trên sẽ báo lỗi, bởi vì chúng ta khai báo biến success nhưng không sử dụng đến. Tuy nhiên hàm greetingMsg() lại trả về 2 giá trị đó là bool và string, vậy làm thế nào để lấy mỗi giá trị string mà không cần dùng đến giá trị bool?

Đơn giản là chúng ta chỉ cần thay vào dấu gạch dưới _, giống như trong JavaScript, khi khai báo biến bằng dấu gạch dưới này thì trình biên dịch Go sẽ hiểu là chúng ta không sử dụng đến. Do đó sẽ không còn lỗi nữa.

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

import "fmt"

func main() {
    _, msg := greetingMsg()
    fmt.Println(msg)
}

func greetingMsg() (bool, string) {
    return true, "Hello world!"
}
Đánh giá bài viết: 4.9/5 (40 đánh giá)
Bạn chưa đánh giá

Bình luận

Bài trước
Shadowed variable
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.