2014-01-04 3 views
0

Упрощенная:Сброс time.Time в ГГО структуры

-структуру
type User struct { 
    ResetToken  string  `bson:"resettoken,omitempty" json:"resettoken"` 
    ResetSent  time.Time  `bson:"resetsent,omitempty" json:"resetsent"` 
} 

Теперь при успешном (пароль) сброса он должен установить ResetToken = «» и множество ResetSent к «неинициализированный» ака 0 или начальное значение или пусто, вы называете это.

В случае строки это делается с помощью "" и ", omitempty" , но как мне со временем использовать время?

ответ

1

Нулевой момент time.Time{}, и вы можете проверить, что он равен нулю с time.IsZero(t). Так, что-то вроде:

user.ResetSent = time.Time{} 

Если вам это нужно, чтобы действительно omitempty, вы могли бы использовать *time.Time, так что оставим это поле пустым, если ноль.

Обновление: Замечание Густаво верно, omitempty работает так, как предполагалось для нулевого времени, без указателя.

+1

Обратите внимание, что нет необходимости использовать указатель для работы 'omitempty' для' time.Time'. 'mgo/bson' сам будет называть' IsZero', чтобы определить, является ли он «пустым» или нет. –

+0

Вы правы. Я мог бы поклясться, что это не сработало для меня, когда я тестировал. –