Sobes.tech
Junior

¿Cuáles son las principales estructuras de datos en Go?

sobes.tech AI

Respuesta de la IA

En Go, existen las siguientes estructuras de datos básicas (primitivas) y compuestas (composite):

Primitivas:

  • Booleanos (bool)
  • Tipos numéricos:
    • Enteros (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • Números de punto flotante (float32, float64)
    • Números complejos (complex64, complex128)
    • Byte (byte - alias de uint8)
    • Rune (rune - alias de int32, representa un carácter Unicode)
  • Cadenas (string)

Compuestas:

  • Arrays (array)
    • Tamaño fijo.
    var arr [5]int // array de 5 enteros
    
  • Slices (slice)
    • Tamaño dinámico, basados en arrays.
    var s []int // slice no inicializado
    s = make([]int, 5, 10) // slice de longitud 5 y capacidad 10
    
  • Mapas (map)
    • Colección no ordenada de pares clave-valor.
    m := make(map[string]int) // mapa con claves string y valores int
    
  • Structs (struct)
    • Colección tipada de campos.
    type Person struct {
        Name string
        Age  int
    }
    
  • Punteros (pointer)
    • Guardan la dirección de una celda de memoria.
    var x int = 10
    var p *int = &x // p apunta a x
    
  • Funciones (func)
    • En Go, las funciones son tipos de primera clase.
    type MyFunc func(int) string // tipo de función
    
  • Canales (channel)
    • Se usan para sincronización e intercambio de datos entre goroutines.
    ch := make(chan int) // canal sin búfer para int
    
  • Interfaces (interface)
    • Representan un conjunto de métodos que un tipo debe implementar.
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

También vale la pena mencionar otros tipos compuestos importantes, como:

  • Slices de bytes ([]byte)
  • Slices de runas ([]rune)

Estas estructuras de datos proporcionan flexibilidad y rendimiento para una amplia gama de tareas en Go.