Función reflect.IsNil() en Golang con ejemplos

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() bool

Pará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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *