Tìm hiểu về cách sử dụng định danh trống trong Golang

_(gạch dưới) trong Golang được gọi là Blank Identifier - Định danh trống. Identifier là tên do người dùng định nghĩa của các thành phần chương trình được sử dụng cho mục đích định danh.

Tìm hiểu về cách sử dụng định danh trống trong Golang

Golang có một tính năng đặc biệt là định nghĩa và sử dụng biến chưa sử dụng bằng Blank Identifier. Biến chưa sử dụng là những biến được người dùng định nghĩa trong suốt chương trình nhưng người đó không bao giờ sử dụng các biến này. Các biến đó khiến chương trình gần như không thể đọc được. Như bạn đã biết, Golang là ngôn ngữ lập trình ngắn gọn và dễ đọc hơn nên nó không cho phép lập trình viên định nghĩa một biến chưa sử dụng. Nếu bạn làm như vậy, trình biên dịch sẽ báo lỗi.

Công dụng thực sự của Blank Identifier xuất hiện khi một hàm trả về nhiều giá trị, nhưng chúng ta chỉ cần một vài giá trị và cần loại bỏ giá trị dư thừa. Về cơ bản, nó cho trình biên dịch biết rằng biến này không cần thiết và bỏ qua nó mà không có bất kỳ lỗi nào. Nó ẩn các giá trị của biến, rồi làm cho chương trình có thể đọc được. Vì vậy, bất cứ khi nào bạn gán một giá trị cho Blank Identifier, nó sẽ không sử dụng được.

Ví dụ 1: Trong chương trình dưới đây, hàm mul_div trả về hai giá trị và chúng ta lưu trữ cả hai giá trị trong mul và div identifier. Nhưng ở toàn bộ chương trình, chúng ta chỉ sử dụng một biến, tức là mul. Vì vậy, trình biên dịch sẽ đưa ra lỗi div đã khai báo và không được sử dụng.

// Chương trình Go hiện trình biên dịch
// báo lỗi nếu một biến
// được khai báo nhưng không được sử dụng

package main

import "fmt"

// Hàm chính
func main() {

	// gọi hàm này
	// hàm trả về hai giá trị được gán
	// cho định danh mul và div
	mul, div := mul_div(105, 7)

	// chỉ dùng biến mul
	// trình biên dịch sẽ báo lỗi
	fmt.Println("105 x 7 = ", mul)
}

// hàm trả về hai 
// giá trị của kiểu integer 
func mul_div(n1 int, n2 int) (int, int) {

	// trả về các giá trị này
	return n1 * n2, n1 / n2
}

Kết quả:

./prog.go:15:7: div được khai báo nhưng không được dùng

Ví dụ 2: Sử dụng định danh Blank để sửa chương trình trên. Thay vì định danh div, chỉ cần sử dụng _ (dấu gạch dưới). Nó cho phép trình biên dịch bỏ qua lỗi đã khai báo và không được sử dụng cho biến cụ thể đó.

// Chương trình Go dùng định danh trống

package main

import "fmt"

// Hàm chính
func main() {

	// gọi hàm này
	// hàm trả về hai giá trị
	// được gán cho định danh mul và trống
	mul, _ := mul_div(105, 7)

	// chỉ dùng biến mul
	fmt.Println("105 x 7 = ", mul)
}

// hàm trả về hai giá trị
// của kiểu integer 
func mul_div(n1 int, n2 int) (int, int) {

	// trả về giá trị này
	return n1 * n2, n1 / n2
}

Kết quả:

105 x 7 =  735

Điểm quan trọng cần ghi nhớ:

  • Bạn có thể sử dụng nhiều định danh trống trong cùng một chương trình. Vì vậy, bạn có thể nói rằng một chương trình Golang có thể có nhiều biến sử dụng cùng một tên định danh là blank.
  • Có nhiều trường hợp phát sinh yêu cầu gán giá trị chỉ để hoàn thành cú pháp ngay cả khi biết rằng các giá trị sẽ không được sử dụng trong chương trình ở bất kỳ đâu. Giống như một hàm trả về nhiều giá trị. Hầu hết các trường hợp như vậy đều sử dụng định danh blank.
  • Bạn có thể sử dụng bất kỳ giá trị thuộc bất kỳ loại nào với Blank Identifier.

Theo: Nguyễn Loan (Quản Trị Mạng)

CÓ THỂ BẠN QUAN TÂM