Избегайте написания того же оператора else во вложенном if / else - PullRequest
1 голос
/ 09 марта 2019

Как мне избежать необходимости писать оператор else дважды во вложенных операторах if / else?

func GetPortFromEnvironment(name string, defaultPort int32) int32 {
    var port int32
    if env := os.Getenv("SERVICE_PORT"); env != "" {
        if _port, err := strconv.ParseInt(env, 10, 32); err != nil {
            port = int32(_port)
        } else {
            port = defaultPort
        }
    } else {
        port = defaultPort
    }
    return port
}

1 Ответ

3 голосов
/ 09 марта 2019

Я не буду использовать, если в него входит необязательный оператор:

if statement; condition {  
}

и используя простой, если с:

func GetPortFromEnvironment(name string, defaultPort int32) int32 {
    env := os.Getenv("SERVICE_PORT")

    // no env value. return defaultPort
    if env == "" {
      return defaultPort
    }

    // there's env value.
    port, err := strconv.ParseInt(env, 10, 32)
    if err != nil {

       // Unable to parse port. Fallback to default.
       return defaultPort
    }

    return int32(port)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...