Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Στο Go, τα κλειδιά σε ένα χάρτη μπορούν να είναι μόνο τύποι που υποστηρίζουν την λειτουργία σύγκρισης (ο τελεστής ==). Οι δομές μπορούν να χρησιμοποιηθούν ως κλειδιά αν όλα τα πεδία τους είναι συγκρίσιμα. Για παράδειγμα, αν μια δομή περιέχει μόνο βασικούς τύπους (int, string κ.λπ.), τότε μπορεί να χρησιμοποιηθεί ως κλειδί. Αν όμως η δομή περιέχει 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]) // έξοδος: σημείο
}

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