Что такое использование типов указателей над типом объекта внутри структуры? - PullRequest
0 голосов
/ 14 апреля 2020

У меня запущена служба отдыха. Вызов API будет заполнен ниже структуры, которую пользователь передал вызовом REST.

type struct Body{
    param1 *string
    param2 string
}

Теперь я могу обработать этот запрос в своей функции-обработчике. Как часть обработки ошибок в моей функции-обработчике, я сделаю следующее:

Для param1 (который является указателем) мне нужно проверить, не равен ли указатель нулю и длина строки не должна быть 0.

Для param2 мне просто нужно проверить, не должна ли длина строки быть 0

Использование строкового объекта заставит меня использовать меньше проверок и писать чистый код. Тогда почему большинство людей используют указатели в таком случае.

1 Ответ

2 голосов
/ 14 апреля 2020

На языке go переменные, объявленные без начального значения, имеют нулевые значения, а не null значение.

  • 0 для всех целочисленных типов
  • "" ( пустая строка) для строк
  • ноль для интерфейсов, срезов, указателей

Итак, когда вам нужно различить значение null и нулевое значение, вам нужно использовать pointers потому что pointers нулевое значение равно nil. Golang не разрешает null, его версия равна нулю, в некоторых языках.

Пример:

В базе данных, как MySql "" ( пустая строка) и 0 не является нулевым значением для строковых и целых типов. Если вам нужно сохранить строковое значение для "" (пустая строка) и нулевое значение по-разному в базе данных, вам нужно использовать указатель на строку в структуре тела запроса.

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