Шаблон значений по умолчанию для Голанга - PullRequest
0 голосов
/ 28 октября 2018

У меня есть это:

port := os.Getenv("huru_api_port") ||  ":8000"

, которое не компилируется, Голанг не распознает это как синтаксис для значения по умолчанию ": 8000", если huru_api_port пуст / не определен.

Есть ли хороший способ сделать это?С другой стороны, почему это «: 8000» вместо «8000», например:

log.Fatal(http.ListenAndServe(":8000", router))

Ответы [ 3 ]

0 голосов
/ 28 октября 2018

Я бы использовал LookupEnv .Он предлагает boolean, которое будет ложным, если переменная не установлена.

:8000 означает, что прослушиватель будет связываться со всеми сетевыми интерфейсами.Вы можете думать, что он отличается от 127.0.0.1:8000, который будет привязан только к интерфейсу обратной связи.

0 голосов
/ 28 октября 2018

os.LookupEnv вернет переменную окружения в виде строки и логическое значение, указывающее, была ли переменная установлена, или вы получите

v, ok = "something", true
// or, if the env var isn't set
v, ok = "", false
// or, if the env var is set but empty:
v, ok = "", true

Используйте ее как:

var port string
var ok bool
if port, ok = os.LookupEnv("huru_api_port"); !ok {
    port = ":8000"
}
0 голосов
/ 28 октября 2018

Нет простого способа сделать это в Go, но для вашего случая вы можете использовать вместо него LookupEnv, который возвращает значение (если установлено) и логическое значение, указывающее, был ли ключ найден в среде:

https://golang.org/pkg/os/#LookupEnv

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