"Ne pas passer d'arguments" le fait sonner comme un appel de fonction. C'est un littéral struct sans champ spécifié. X {} est la valeur zéro de la structure X pour tout X.
Russ Cox
1
@RussCox Je ne pense pas que ce soit vrai. Dans mon cas, j'ai un champ time.Time dans ma structure qui a l'attribut 'omitempty'. Si je ne règle pas cette valeur, elle est automatiquement définie sur 0001-01-01 00:00:00 +0000 UTC au lieu d'être ignorée.
En effet, si l'on compare si la valeur donnée pour le temps est nulle ou non, c'est ce qui devrait réellement être utilisé.
Gaurav Ojha
7
Bien que cette réponse soit correcte pour la comparaison, l'OP n'a pas posé de questions sur la comparaison, mais plutôt sur la manière d'initialiser la valeur zéro. La réponse acceptée est correcte.
IsZero()
pour détecter le temps zéro.Réponses:
L'appel d'un
time.Time
littéral struct vide renverra la date zéro de Go. Ainsi, pour l'instruction d'impression suivante:La sortie est:
Par souci d'exhaustivité, la documentation officielle indique explicitement:
la source
Vous devez utiliser la fonction Time.IsZero () à la place:
la source
La valeur zéro pour time.Time est
0001-01-01 00:00:00 +0000 UTC
Voir http://play.golang.org/p/vTidOlmb9Pla source