Sobes.tech
Junior

Quais são as principais estruturas de dados em Go?

sobes.tech IA

Resposta da IA

No Go, existem as seguintes estruturas de dados principais (primitivas) e compostas (composite):

Primitivas:

  • Booleanos (bool)
  • Tipos numéricos:
    • Inteiros (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • Números de ponto flutuante (float32, float64)
    • Números complexos (complex64, complex128)
    • Byte (byte - alias de uint8)
    • Rune (rune - alias de int32, representa um carácter Unicode)
  • Strings (string)

Compósitos:

  • Arrays (array)
    • Tamanho fixo.
    var arr [5]int // array de 5 inteiros
    
  • Slices (slice)
    • Tamanho dinâmico, baseado em arrays.
    var s []int // slice não inicializado
    s = make([]int, 5, 10) // slice de comprimento 5 com capacidade 10
    
  • Mapas (map)
    • Coleção não ordenada de pares chave-valor.
    m := make(map[string]int) // mapa com chaves string e valores int
    
  • Structs (struct)
    • Coleção tipada de campos.
    type Person struct {
        Name string
        Age  int
    }
    
  • Ponteiros (pointer)
    • Guardam o endereço de uma célula de memória.
    var x int = 10
    var p *int = &x // p aponta para x
    
  • Funções (func)
    • Em Go, as funções são tipos de primeira classe.
    type MyFunc func(int) string // tipo de função
    
  • Canais (channel)
    • Usados para sincronização e troca de dados entre goroutines.
    ch := make(chan int) // canal sem buffer para int
    
  • Interfaces (interface)
    • Representam um conjunto de métodos que um tipo deve implementar.
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

Também vale a pena mencionar outros tipos compostos importantes, como:

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

Estas estruturas de dados proporcionam flexibilidade e desempenho para uma ampla gama de tarefas em Go.