2016-04-23 4 views
0

Если есть какой-либо чистый способ проверить, не указано ли какое-либо значение поля struct, nil?Проверьте, нет ли какого-либо поля структуры nil

Пусть я есть

type test_struct struct { 
    Name string `json:"name" binding:"required"` 
    Email string `json:"email" binding:"required"` 
    Message string `json:"message" binding:"required"` 
} 

И с Gin я наполнении struct со значениями в

var temp test_struct 
c.Bind(&temp) 

И все работает отлично, но я хочу, чтобы проверить, все ли temp.Name, temp.Email, temp.Message это nil, конечно, мы можем проверить это, просто сравнивая каждое поле с nil: if temp.Name == nil и так далее, но я ищу чистый er версия этого, есть ли какие-нибудь?

UPD: Из-за недостатка знаний в Go языка я не знал, что Bind функция gin пакета возвращает ошибку, если мы передаем strucure с binding:"required" полями. Спасибо @ matt.s, я понял. Таким образом, ответ должен был бы проверить err:

var temp test_struct 
err := c.Bind(&temp) 
if err != nil { 
    // Do my stuff(some of fields are not set) 
} 
+1

Строки не могут быть пустыми. –

ответ

3

Вы должны сначала проверить, что Bind не возвращает ошибку. Если это не так, то все поля будут установлены в соответствующие значения или инициализированы нулевыми значениями, если нет. Это означает, что строки гарантированно не равны нулю (хотя они будут установлены в "", если они не имеют значения).

Смежные вопросы