Sobes.tech
Junior — Middle

Μπορεί να χρησιμοποιηθεί μια δομή δεδομένων ως κλειδί σε έναν χάρτη ή πίνακα κατακερματισμού;

sobes.tech AI

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

Στη γλώσσα Go, μια δομή δεδομένων μπορεί να χρησιμοποιηθεί ως κλειδί σε έναν χάρτη (map) εάν πληροί τις απαιτήσεις συγκρίσιμότητας (comparable). Αυτό σημαίνει ότι όλα τα πεδία της δομής πρέπει να είναι τύποι που μπορούν να συγκριθούν με τον τελεστή ==.

Για παράδειγμα, δομές που περιέχουν μόνο βασικούς τύπους (int, string, bool κ.λπ.) ή άλλες συγκρίσιμες δομές μπορούν να είναι κλειδιά. Ωστόσο, δομές που περιέχουν slices, χάρτες ή συναρτήσεις δεν μπορούν να είναι κλειδιά, καθώς αυτοί οι τύποι δεν είναι συγκρίσιμοι.

Παράδειγμα:

package main

import "fmt"

type Point struct {
    X, Y int
}

func main() {
    m := make(map[Point]string)
    p := Point{X: 1, Y: 2}
    m[p] = "σημείο"
    fmt.Println(m[p]) // έξοδος: σημείο
}

Εάν η δομή περιέχει μη συγκρίσιμα πεδία, ο μεταγλωττιστής θα εμφανίσει σφάλμα κατά την προσπάθεια χρήσης της ως κλειδί του χάρτη.