Détection efficace des valeurs vides dans Go à l'aide de Reflection
Lorsque vous traitez des valeurs d'interface{} dans Go et devez déterminer si elles ne sont pas initialisées ( c'est-à-dire avoir une valeur de 0, "", faux ou nul), la réflexion offre une solution pratique. Voici comment y parvenir :
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
Il est crucial de différencier deux concepts distincts :
La fonction ci-dessus vérifie le deuxième cas, où la valeur sous-jacente est zéro.
Considération pour les types non comparables
La fonction utilise le == opérateur, qui peut ne pas fonctionner pour des types non comparables. Pour résoudre ce problème, vous pouvez utiliser à la place reflect.DeepEqual() :
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }
Cette fonction mise à jour fonctionnera correctement avec tous les types, y compris les types non comparables.
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!