(Статья 8 из цикла "Golang с нуля") Мы уже изучили, как организовать код и управлять зависимостями. Теперь пришло время поговорить о двух критически важных аспектах профессиональной разработки: обработке ошибок и модульном тестировании. Go имеет уникальный подход к этим темам, который делает код более надёжным и предсказуемым. В Go нет привычных try-catch блоков, как в других языках. Вместо этого ошибки — это просто возвращаемые значения, которые реализуют встроенный интерфейс error. Это заставляет разработчика явно обрабатывать каждую потенциальную ошибку. Пример:
Большинство функций, где возможна ошибка, возвращают два значения: результат и error.
package main import (
"fmt"
"os" ) func main() {
// os.ReadFile возвращает два значения: данные и ошибку
data, err := os.ReadFile("nonexistent_file.txt")
// Если err не равен nil, значит, произошла ошибка
if err != nil {
fmt.Println("Произошла ошибка:", err)
return
}
fmt.Println("Файл успешно прочитан:", string(data)) }
Тако