Maison >développement back-end >Golang >Comment puis-je déterminer de manière fiable la valeur zéro de n'importe quel type en Go ?

Comment puis-je déterminer de manière fiable la valeur zéro de n'importe quel type en Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 10:21:09356parcourir

How Can I Reliably Determine the Zero Value of Any Type in Go?

Détermination de la valeur zéro des types arbitraires dans Go

Dans Go, déterminer si une variable est sa valeur zéro peut être simple dans de nombreux cas . Cependant, la comparaison peut devenir difficile lorsqu’il s’agit de types qui ne sont pas directement comparables. En particulier, les tranches ne peuvent pas être évaluées à l'aide de simples contrôles d'égalité.

Une solution proposée pourrait être :

var v ArbitraryType
v == reflect.Zero(reflect.TypeOf(v)).Interface()

Cependant, cette approche échoue car elle repose sur l'égalité des types, ce qui ne fonctionne pas pour tous les types.

Heureusement, Go 1.13 a introduit la méthode Value.IsZero() dans le package Reflect. Cette méthode fournit un moyen simple de déterminer si une valeur est sa valeur nulle, quel que soit son type.

if reflect.ValueOf(v).IsZero() {
    // v is zero, do something
}

Cette méthode peut détecter la valeur zéro pour les types de base, ainsi que pour les types plus complexes tels que les canaux. , fonctions, tableaux, interfaces, cartes, pointeurs, tranches, pointeurs dangereux et même des structures. En tirant parti de Value.IsZero(), les développeurs peuvent facilement vérifier les valeurs nulles de manière générique et indépendante du type.

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