openlang

Хочу сохранить мои null

Здравствуйте,

Я хочу сохранить null, приходящие в JSON с сервера REST API. Сейчас я делаю unmarshal в структуру, и эти Null превращаются в нулевые значения.

Может кто-нибудь дать небольшой пример или ссылку на полезное видео? Я пробовал указатели, но не понял их пользу, потому что нулевые значения всё равно появляются.

Переведено с английскогоПоказать оригинал

Разговор продолжается 3

Следуя доводам
  1. Ссылка на ответ

    Привет, fernvale_54,

    Как уже заметил mossglen_55, можно представить значение указателем, чтобы показать, что соответствующих данных может не быть

    type Entry struct {
        Text *string `json:"bar"`
    }

    Используя значение, которое может быть null, сначала проверьте его на null, прежде чем обращаться с ним как с действительно существующим значением, иначе получите panic: runtime error: invalid memory address or nil pointer dereference, подойдёт примерно такой вариант:

    var entry Entry
    
    //...unmarsal into Entry
    
    if entry.Text != nil {
        // len() is safe in this branch
        fmt.Println(len(*entry.Text))
    }

    Для более аккуратного JSON на выходе посмотрите также теги omitempty и omitzero (omitzero появился в go 1.24 сравнительно недавно, так что материалов о нём пока может быть мало)

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Удобная особенность go состоит в том, что len() — статическая функция. Перед получением длины среза или даже перебором его элементов проверка на null не нужна. Для большинства операций срез nil ведёт себя как срез длины 0.

    Но для остальных примитивов, структур и map ваше замечание верно.

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как правильно записать условное выражение в MySQL SELECT?

    Работаю с MySQL и хочу написать в SQL что-то вроде тернарного выражения, например: Вывод должен выглядеть примерно так: Как э…

    Ответы 2Последняя активность sql
  2. Безопасное удаление необязательного столбца в PostgreSQL 9+

    Хочу удалить столбец из таблицы. Как определить, существует ли этот столбец? Прочитал страницу руководства https://www.postgr…

    Ответы 2Последняя активность sql
  3. Недоступное поле производной таблицы в SQL

    Я выполняю следующий SQL-запрос: Он выдаёт такую ошибку: #1054 - Unknown column 'shipping.post_id' in 'on clause'. Код выгляд…

    Ответы 2Последняя активность sql