Détection rapide des valeurs vides via la réflexion dans Go
Lorsque vous traitez avec des interfaces qui stockent des valeurs int, string, bool ou autres, il est souvent nécessaire pour déterminer si la valeur stockée n’est pas initialisée. Cela signifie vérifier s'il est égal à l'un des éléments suivants :
Solution :
Pour vérifier efficacement cela dans Go, vous pouvez utiliser la réflexion et la fonction Reflect.Zero() :
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
Explication :
Remarque :
La solution originale utilisée == à des fins de comparaison, ce qui pourrait ne pas fonctionner pour des types qui ne sont pas comparables. Pour garantir une compatibilité universelle, vous pouvez utiliser à la place reflect.DeepEqual() :
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }
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!