Sobes.tech
Junior

Ποιες είναι οι βασικές δομές δεδομένων στο Go;

sobes.tech AI

Απάντηση από AI

Στη γλώσσα Go, υπάρχουν οι ακόλουθες βασικές (primitive) και σύνθετες (composite) δομές δεδομένων:

Βασικές:

  • Λογικές τιμές (bool)
  • Αριθμητικοί τύποι:
    • Ακέραιοι (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • Πραγματικοί αριθμοί (float32, float64)
    • Συγκροτημένοι αριθμοί (complex64, complex128)
    • Byte (byte - ψευδώνυμο του uint8)
    • Rune (rune - ψευδώνυμο του int32, αντιπροσωπεύει ένα χαρακτήρα Unicode)
  • Συμβολοσειρές (string)

Σύνθετες:

  • Πίνακες (array)
    • Σταθερού μεγέθους.
    var arr [5]int // πίνακας 5 ακέραιων
    
  • Λωρίδες (slice)
    • Δυναμικού μεγέθους, βασίζονται σε πίνακες.
    var s []int // μη αρχικοποιημένη λωρίδα
    s = make([]int, 5, 10) // λωρίδα μήκους 5 και χωρητικότητας 10
    
  • Χάρτες (map)
    • Μη ταξινομημένη συλλογή ζευγών κλειδιού-τιμής.
    m := make(map[string]int) // χάρτης με κλειδιά string και τιμές int
    
  • Δομές (struct)
    • Τυποποιημένη συλλογή πεδίων.
    type Person struct {
        Name string
        Age  int
    }
    
  • Δείκτες (pointer)
    • Αποθηκεύουν τη διεύθυνση ενός κελιού μνήμης.
    var x int = 10
    var p *int = &x // p δείχνει στο x
    
  • Συναρτήσεις (func)
    • Στη γλώσσα Go, οι συναρτήσεις είναι τύποι πρώτης τάξης.
    type MyFunc func(int) string // τύπος συνάρτησης
    
  • Κανάλια (channel)
    • Χρησιμοποιούνται για συγχρονισμό και ανταλλαγή δεδομένων μεταξύ goroutines.
    ch := make(chan int) // κανάλι χωρίς buffer για int
    
  • Διεπαφές (interface)
    • Αντιπροσωπεύουν ένα σύνολο μεθόδων που πρέπει να υλοποιεί ένας τύπος.
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

Επίσης, αξίζει να αναφερθούν και άλλοι σημαντικοί σύνθετοι τύποι, όπως:

  • Λωρίδες byte ([]byte)
  • Λωρίδες rune ([]rune)

Αυτές οι δομές δεδομένων παρέχουν ευελιξία και απόδοση για ένα ευρύ φάσμα εργασιών στη γλώσσα Go.