Sobes.tech
Junior

Jakie są główne struktury danych w Go?

sobes.tech AI

Odpowiedź od AI

W języku Go istnieją następujące podstawowe (prymitywne) i złożone (kompozytowe) struktury danych:

Prymitywne:

  • Wartości logiczne (bool)
  • Typy liczbowe:
    • Liczby całkowite (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • Liczby zmiennoprzecinkowe (float32, float64)
    • Liczby zespolone (complex64, complex128)
    • Byte (byte - alias dla uint8)
    • Rune (rune - alias dla int32, reprezentuje znak Unicode)
  • Ciągi znaków (string)

Struktury złożone:

  • Tablice (array)
    • O stałym rozmiarze.
    var arr [5]int // tablica 5 liczb całkowitych
    
  • Slicery (slice)
    • Dynamiczny rozmiar, oparty na tablicach.
    var s []int // niezainicjalizowany slicer
    s = make([]int, 5, 10) // slicer o długości 5 i pojemności 10
    
  • Mapy (map)
    • Nieuporządkowana kolekcja par klucz-wartość.
    m := make(map[string]int) // mapa z kluczami typu string i wartościami int
    
  • Struktury (struct)
    • Typowana kolekcja pól.
    type Person struct {
        Name string
        Age  int
    }
    
  • Wskaźniki (pointer)
    • Przechowują adres komórki pamięci.
    var x int = 10
    var p *int = &x // p wskazuje na x
    
  • Funkcje (func)
    • W Go funkcje są typami pierwszej klasy.
    type MyFunc func(int) string // typ funkcji
    
  • Kanały (channel)
    • Używane do synchronizacji i wymiany danych między gorutynami.
    ch := make(chan int) // kanał bez bufora dla int
    
  • Interfejsy (interface)
    • Reprezentują zestaw metod, które typ musi zaimplementować.
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

Warto również wspomnieć o innych ważnych typach złożonych, takich jak:

  • Slice bajtów ([]byte)
  • Slice rune ([]rune)

Te struktury danych zapewniają elastyczność i wydajność dla szerokiego zakresu zadań w Go.