En Golang , la verificación nula se ve con frecuencia en el código de GoLang, especialmente para la verificación de errores. En la mayoría de los casos, la verificación de cero es sencilla, pero en el caso de la interfaz, es un poco diferente y se debe tener especial cuidado.
Aquí la tarea es verificar que el puntero o la interfaz sean nulos o no en Golang, puede verificar con lo siguiente:
Ejemplo 1: En este ejemplo, el puntero se comprueba si es un puntero nulo o no.
// Go program to illustrate how to // check pointer is nil or not package main import ( "fmt" ) type Temp struct { } func main() { var pnt *Temp // pointer var x = "123" var pnt1 *string = &x fmt.Printf("pnt is a nil pointer: %v\n", pnt == nil) fmt.Printf("pnt1 is a nil pointer: %v\n", pnt1 == nil) }
Producción:
pnt is a nil pointer: true pnt1 is a nil pointer: false
Ejemplo 2: En este ejemplo, se comprueba si la interfaz es una interfaz nula o no.
// Go program to illustrate how to // check interface is nil or not package main import ( "fmt" ) // Creating an interface type tank interface { // Methods Tarea() float64 Volume() float64 } type myvalue struct { radius float64 height float64 } // Implementing methods of // the tank interface func (m myvalue) Tarea() float64 { return 2*m.radius*m.height + 2*3.14*m.radius*m.radius } func (m myvalue) Volume() float64 { return 3.14 * m.radius * m.radius * m.height } func main() { var t tank fmt.Printf("t is a nil interface: %v\n", t == nil) t = myvalue{10, 14} fmt.Printf("t is a nil interface: %v\n", t == nil) }
Producción:
t is a nil interface: true t is a nil interface: false
Ejemplo 3: En este ejemplo, la interfaz que contiene un puntero nulo se verifica si es una interfaz nula o no.
// Go program to illustrate how to // check interface holding a nil // pointer is nil or not package main import ( "fmt" ) type Temp struct { } func main() { // taking a pointer var val *Temp // taking a interface var val2 interface{} // val2 is a non-nil interface // holding a nil pointer (val) val2 = val fmt.Printf("val2 is a nil interface: %v\n", val2 == nil) fmt.Printf("val2 is a interface holding a nil"+ " pointer: %v\n", val2 == (*Temp)(nil)) }
Producción:
val2 is a nil interface: false val2 is a interface holding a nil pointer: true
Publicación traducida automáticamente
Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA