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.
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
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.
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!"
}