Conceptos básicos de sintaxis en Go

Todo tipo de dato puede ser asignado a una variable de tipo interface{}.

Ejemplo: a := []byte('abc')

func main() {
    m := make(map[string]int, 99)
    cap(m) //error
}

error: argumento inválido m (tipo map[string]int) para cap

La función incorporada cap devuelve el tamaño de espacio asignado a un arreglo o una rebanada, y no puede utilizarse con mapas.

make se emplea para inicializar slices, maps y canales.

Para obtener la capacidad de un mapa, utiliza la función len.

1. Aserción: verificar el tipo de una variable

var a interface{}
rc, ok := a.(interface{}) []byte []rune  //Similar a isdigit en Python, retorna un valor booleano
// rc es el valor de a, ok es el resultado booleano de la aserción

Conversiones entre tipos en Go

I. Conversiones entre tipos primitivos

1. Cadena a entero

Importar paquete: strconv

int, err := strconv.Atoi(string)

2. Cadena a entero de 64 bits

int64, err := strconv.ParseInt(string, 10, 64)

3. Entero a cadena

string := strconv.Itoa(int)

4. Entero de 64 bits a cadena

string := strconv.FormatInt(int64, 10)

5. Cadena a flotante de 32 o 64 bits

float32, err := strconv.ParseFloat(string, 32)
float64, err := strconv.ParseFloat(string, 64)

6. Entero de 64 bits a entero

int := int(int64)

7. Entero a entero de 64 bits

int64 := int64(int)

II. Conversiones entre interface{} y otros tipos

Las conversiones incluyen conversiones implícitas y aserciones.

1. De interface{} a tipo específico: interfaceVar.(tipo_específico)

Principio: implementación medianet aserción. Ejemplo:

value, ok := a.(string)
if !ok {
    fmt.Println("No se pudo convertir al tipo string")
    return
}
fmt.Println("El valor es:", value)

2. Conversión implícita de tipo específico a interface{}

3. Conversión entre cadenas y []byte:

  • Cadena a []byte: bytes := []byte(cadena)
  • []byte a cadena: cadena := string(bytes)

Iteraciones con etiquetas en Go: break y continue

Ejemplo:

LABEL1:
   for i := 0; i <= 5; i++ {
      for j := 0; j <= 5; j++ {
         if j == 4 {
            goto LABEL1 //continue (etiqueta permite salir de bucles anidados)
            //goto reinicia desde la etiqueta, reinicia variables
            //break termina solo el bucle etiquetado, similar a return
         }
         fmt.Printf("i es: %d, y j es: %d\n", i, j)
      }
   }

Sobre la verificación de valores nil

Solo pueden tener valor nil los siguientes tipos: punteros, canales, funciones, interfaces, mapas o slices.

Etiquetas: Go golang sintaxis tipos de datos conversiones

Publicado el 10-1 22:20