Escriba afirmaciones en Golang

Las aserciones de tipo en Golang brindan acceso al tipo exacto de variable de una interfaz. Si el tipo de datos ya está presente en la interfaz, recuperará el valor del tipo de datos real que tiene la interfaz. Una aserción de tipo toma un valor de interfaz y extrae de él un valor del tipo explícito especificado. Básicamente, se utiliza para eliminar la ambigüedad de las variables de la interfaz.

Sintaxis:

t := value.(typeName)

donde value es una variable cuyo tipo debe ser una interfaz, typeName es el tipo concreto que queremos verificar y el valor subyacente de typeName se asigna a la variable t .

Ejemplo 1:

// Golang program to illustrate 
// the concept of type assertions
package main
  
import (
    "fmt"
)
  
// main function
func main() {
      
    // an interface that has 
    // a string value
    var value interface{} = "GeeksforGeeks"
      
    // retrieving a value
    // of type string and assigning
    // it to value1 variable
    var value1 string = value.(string)
      
    // printing the concrete value
    fmt.Println(value1)
      
    // this will panic as interface
    // does not have int type
    var value2 int = value.(int)
      
    fmt.Println(value2)
}

Producción:

GeeksforGeeks
panic: interface conversion: interface {} is string, not int

En el código anterior, dado que la interfaz de valor no contiene un tipo int, la declaración desencadenó pánico y la afirmación de tipo falla. Para verificar si un valor de interfaz contiene un tipo específico, es posible que la aserción de tipo devuelva dos valores, la variable con el valor typeName y un valor booleano que informa si la aserción fue exitosa o no. Esto se muestra en el siguiente ejemplo:

Ejemplo 2:

// Golang program to show type
// assertions with error checking
package main
  
import (
    "fmt"
)
  
// main function
func main() {
      
    // an interface that has 
    // an int value
    var value interface{} = 20024
      
    // retrieving a value
    // of type int and assigning
    // it to value1 variable
    var value1 int = value.(int)
      
    // printing the concrete value
    fmt.Println(value1)
      
    // this will test if interface
    // has string type and
    // return true if found or
    // false otherwise
    value2, test := value.(string)
    if test {
      
        fmt.Println("String Value found!")
        fmt.Println(value2)
    } else {
      
        fmt.Println("String value not found!")
    }
}

Producción:

20024
String value not found!

Publicación traducida automáticamente

Artículo escrito por vanigupta20024 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 *