_(подчеркивание) в Golang называется пустым идентификатором . Идентификатор — определяемое пользователем имя компонентов программы, используемое для целей идентификации.

В Golang есть специальная функция определения и использования неиспользуемых переменных с помощью пустого идентификатора. Неиспользуемые переменные — это те переменные, которые пользователь определяет во время работы программы, но никогда не использует. Эти переменные делают программу практически нечитаемой. Как вы знаете, Golang — более лаконичный и читабельный язык программирования, поэтому он не позволяет программистам определять неиспользуемые переменные. Если вы это сделаете, компилятор выдаст вам ошибку.
Реальное использование пустого идентификатора происходит, когда функция возвращает несколько значений, но нам нужно только несколько значений и нужно удалить лишние значения. По сути, он сообщает компилятору, что эта переменная не нужна, и игнорирует ее без каких-либо ошибок. Он скрывает значения переменных, делая программу читаемой. Поэтому всякий раз, когда вы присваиваете значение пустому идентификатору, оно будет бесполезно.
Пример 1: В программе ниже функция mul_div возвращает два значения, и мы сохраняем оба значения в идентификаторах mul и div . Но во всей программе мы используем только одну переменную, т. е. mul . Поэтому компилятор выдаст ошибку , что div объявлен, но не используется.
// 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
}
Результат:
./prog.go:15:7: div được khai báo nhưng không được dùng
Пример 2: Используйте пустой идентификатор для изменения указанной выше программы. Вместо обозначения div просто используйте _ (подчеркивание) . Это позволяет компилятору игнорировать объявленные и неиспользуемые ошибки для данной конкретной переменной.
// 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
}
Результат:
105 x 7 = 735
Важные моменты, которые следует помнить:
- В одной программе можно использовать несколько пустых идентификаторов. Таким образом, можно сказать, что программа на Golang может иметь несколько переменных, использующих одно и то же имя идентификатора — пробел.
- Существует много случаев, когда необходимо присваивать значения только для завершения синтаксиса, даже если известно, что эти значения не будут использоваться в программе нигде. Как функция, которая возвращает несколько значений. В большинстве таких случаев используется пустой идентификатор.
- С пустым идентификатором можно использовать любое значение любого типа.