Golang значение карты не извлекается ключом - PullRequest
0 голосов
/ 26 мая 2020

Нужно убедиться, что я не сойду с ума здесь. При регистрации карты экземпляров карта отображается должным образом, однако получение значения из карты не работает, как показано ниже.

serverStates инициализируется как: serverStates: make(map[string](string))

Функция:

// Function to retrieve a server state by key
func (sv *ServerSupervisor) getState(key string) string {
    sv.mutex.Lock()
    defer sv.mutex.Unlock()
    strings.TrimSpace(key)
    log.Println("map size: ", len(sv.serverStates))
    log.Println("map: ", sv.serverStates)
    log.Println("map at " + key + ": ", sv.serverStates[key])
    return sv.serverStates[key]
}

Вывод в консоль:

2020/05/26 22:49:10 map size:  1
2020/05/26 22:49:10 map:  map[2Rapxurg69iO:idle]
2020/05/26 22:49:10 map at 2Rapxurg69iO    :

Может кто-нибудь объяснить, почему sv.serverStates[key] равно нулю?

1 Ответ

0 голосов
/ 26 мая 2020

Мои индексы байтовых срезов во вспомогательной функции оказались неверными, и в ключ были добавлены завершающие нулевые символы.

Я использовал fmt.printf("%q", key), как было предложено мартом c, который показал "9mfMcKhVRnzj\x00\x00\x00\x00"

strings.TrimSpace() не будет работать в этом случае, и я решил проблему, настроив байтовый сегмент.

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