El lenguaje Go proporciona una implementación de soporte incorporada de la reflexión en tiempo de ejecución y permite que un programa manipule objetos con tipos arbitrarios con la ayuda del paquete de reflexión. La función reflect.IsNil() en Golang se usa para verificar si su argumento v es nulo. El argumento debe ser un valor chan, func, interface, map, pointer o slice; si no es así, IsNil entra en pánico.
Nota: IsNil no siempre es equivalente a una comparación regular con nil en Go. Por ejemplo, si v se creó llamando a ValueOf con una variable de interfaz no inicializada i, i==nil será verdadero pero v.IsNil entrará en pánico ya que v será el valor cero.
Sintaxis:
func (v Value) IsNil() boolParámetros: Esta función no acepta ningún parámetro.
Valor devuelto: esta función devuelve si su argumento v es nulo o no.
Los siguientes ejemplos ilustran el uso del método anterior en Golang:
Ejemplo 1:
// Golang program to illustrate // reflect.IsNil() Function package main import ( "bytes" "fmt" ) // Main function func main() { var body *bytes.Buffer fmt.Printf("main(): body == nil ? %t\n", body == nil) }
Producción:
main(): body == nil ? true
Ejemplo 2:
// Golang program to illustrate // reflect.IsNil() Function package main import ( "fmt" "reflect" ) func isNilFixed(i interface{}) bool { if i == nil { return true } switch reflect.TypeOf(i).Kind() { case reflect.Ptr, reflect.Map, reflect.Array, reflect.Chan, reflect.Slice: //use of IsNil method return reflect.ValueOf(i).IsNil() } return false } // Main function func main() { t := reflect.TypeOf(5) arr := reflect.ArrayOf(4, t) inst := reflect.New(arr).Interface().(*[4]int) for i := 1; i <= 4; i++ { inst[i-1] = i*i } fmt.Println(isNilFixed(inst)) }
Producción:
false
Publicación traducida automáticamente
Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA