Этот блог посвящен возврату и обработке ошибок. Обработка ошибок является важной темой. Мы создали два простых модуля в разделе Изучение Go из документации №2 (Вызов кода из другого модуля). Мы продолжаем работу с созданной папкой в ​​блоге №2.

У нас есть папка приветствия. Внутри этой папки у нас есть файл Greeting.go. Нам нужно изменить файл Greetings.go.

// greetings.go
package greetings
import (
    "errors"
    "fmt"
)
// Hello returns a greeting for the named person.
func Hello(name string) (string, error) {
    // If no name was given, return an error with a message.
    if name == "" {
        return "", errors.New("empty name")
    }
    // If a name was received, return a value that embeds the name
    // in a greeting message.
    message := fmt.Sprintf("Hi, %v. Welcome!", name)
    return message, nil
}

Здесь важно импортировать пакет ошибок. Это связано с тем, что ошибки можно использовать, например, errors.New(”пустое имя”). В функции Hello предоставляется контроль имени, пусто оно или нет. Затем верните пустую строку и ошибку. Ваш вызывающий объект проверит второе значение, чтобы увидеть, не произошла ли ошибка. Кроме того, добавление nil (что означает отсутствие ошибки) ко второму возврату показывает успешный возврат.

Любая функция Go может возвращать несколько значений.

Перейдем к папке hello, файлу hello.go. Теперь мы обрабатываем ошибку, возвращаемую функцией Hello.

// hello.go
package main
import (
    "fmt"
    "log"
    "example.com/greetings"
)
func main() {
    log.SetPrefix("greetings: ")
    log.SetFlags(0)
    message, err := greetings.Hello("")
		// error hendling
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(message)
}

Настройте пакет журнала для печати «приветствия:» в начале с помощью log.SetPrefix («приветствия:»). Назначьте два возвращаемых параметра для message и err. Для проверки ошибок поместим пустую строку в функцию Hello. Затем приходит часть условия, если ошибка не равна нулю, тогда запишите ошибку с помощью log.Fatal(err). Если он равен нулю, код продолжается с ftm.Println(message).

Открываем терминал и запускаем то, что пишем;

// terminal
$ go run .
greetings: empty name
exit status 1

Этот пост в блоге является личными заметками 🙂 Если вас это больше интересует, вам нужно проверить сайт https://go.dev/doc/tutorial/handle-errors.