Как безопасно загрузить хеш и преобразовать значение в логическое значение, если оно существует - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть хэш redis с ключом has_ended, который я хочу преобразовать в логическое значение.

someMap, _ := rv.redis.HGetAll(key).Result() // returns map[string]interface{}

hasEnded := someMap["has_ended"]

Если ключ "has_ended" отсутствует на карте, и я пытаюсь преобразовать его в логическое значение, он вылетит. Как я могу написать это безопасно?

1 Ответ

0 голосов
/ 01 ноября 2018

Если вы используете популярный пакет github.com/go-redis/redis, возвращаемое значение из HGetAll(key).Result() равно map[string]string ( doc ). Выражение someMap["has_ended"] возвращает пустую строку, если ключ отсутствует.

Если hasEnded имеет значение true, если и только если ключ присутствует со значением «true», тогда используйте следующее:

 hasEnded := someMap["has_ended"] == "true"

Используйте strconv.ParseBool для обработки более широкого диапазона возможных значений (1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False):

 hasEnded, err := strconv.ParseBool(someMap["has_ended"])
 if err != nil {
     // handle invalid value or missing value, possibly by setting hasEnded to false
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...