Maison >développement back-end >Golang >Pourquoi `==` renvoie-t-il `false` lors de la comparaison de structures Go `time.Time` identiques ?

Pourquoi `==` renvoie-t-il `false` lors de la comparaison de structures Go `time.Time` identiques ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-17 15:18:11271parcourir

Why Does `==` Return `false` When Comparing Identical Go `time.Time` Structs?

Pourquoi la comparaison de deux structures temporelles avec des valeurs de date et d'heure identiques à l'aide de "==" donne-t-elle Faux ?

Dans le contexte de Go programmation, le type time.Time est une structure qui représente un moment spécifique dans le temps. Lors de la comparaison de deux instances time.Time à l'aide de l'opérateur d'égalité ==, il est important de comprendre les nuances de cette opération.

Par défaut, lors de la comparaison des valeurs time.Time avec ==, non seulement les valeurs de temps mais également les emplacements associés sont évalués pour leur égalité. La structure time.Time comprend un champ *Location, qui spécifie le fuseau horaire ou l'emplacement de la valeur temporelle.

Dans l'exemple de code fourni, deux instances time.Time (t1 et t2) sont créées puis comparées. . Bien que leurs composantes temporelles soient équivalentes, leurs champs *Location peuvent faire référence à des emplacements différents. Cette différence d'emplacements fait que la comparaison == renvoie false.

Pour vérifier cela, le code démontre que t1.Location() et t2.Location() ne sont pas identiques, même s'ils représentent tous deux le même UTC. fuseau horaire. En effet, dans Go, même si deux emplacements font référence au même fuseau horaire, ils peuvent ne pas être la même instance de *Location.

Pour garantir que == renvoie vrai pour les valeurs de temps avec des composants temporels et des emplacements identiques , on peut utiliser les méthodes Time.UTC() ou Time.Local() pour attribuer explicitement le même *Location aux deux valeurs. Alternativement, la méthode Time.Equal() peut être utilisée, qui ignore l'emplacement lors de la comparaison des valeurs temporelles et ne prend en compte que les composantes temporelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn