Мы уже упоминали пустой идентификатор пару раз в контексте for range
циклов и карт. Пустой идентификатор может быть назначен или объявлен с любым значением любого типа, со значением отброшенным без каких-либо последствий. Это немного похоже в Unix на запись в файл /dev/null
: это представляет значение доступное только для записи, для использования в качестве заполнителя, где переменная необходима, но фактическое значение не имеет значения. В этом и следующих постах будут представлены еще несколько вариантов использования пустого идентификатора.
Пустой идентификатор в множественном назначении
Использование пустого идентификатора в цикле for range
- это частный случай общей ситуации: множественное назначение.
Если назначение требует нескольких значений на левой стороне, но одно из значений не будет использоваться программой, пустой идентификатор на левой стороне назначения избавляет от необходимости создавать фиктивную переменную и дает понять, что значение должно быть отброшено. Например, при вызове функции, которая возвращает значение и ошибку, но важна только ошибка, используйте пустой идентификатор, чтобы отбросить ненужное значение.
if _, err := os.Stat(path); os.IsNotExist(err) {
fmt.Printf("%s does not exist\n", path)
}
Иногда вы увидите код, который отбрасывает значение ошибки с целью игнорирования ошибки; это ужасная практика. Всегда проверяйте возвращаемые ошибки; они предоставлены не просто так, а по какой-то причине, на которую стоит обратить внимание.
// Плохо!
// Этот код завершится падением если путь не существует.
fi, _ := os.Stat(path)
if fi.IsDir() {
fmt.Printf("%s is a directory\n", path)
}
Читайте также:
Комментариев нет:
Отправить комментарий