Junior — Middle
Μπορείς να συγκρίνεις δύο τμήματα ενός πίνακα ή λίστας μεταξύ τους;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, δεν είναι δυνατή η άμεση σύγκριση δύο slices με τον τελεστή ==, εκτός από τη σύγκριση με το nil. Για τη σύγκριση του περιεχομένου των slices, πρέπει να γράψετε τη δική σας συνάρτηση ή να χρησιμοποιήσετε το πακέτο reflect.
Παράδειγμα μιας συνάρτησης για σύγκριση δύο slices ακέραιων:
func slicesEqual(a, b []int) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
Επίσης, μπορείτε να χρησιμοποιήσετε το reflect.DeepEqual(a, b), αλλά αυτό είναι λιγότερο αποδοτικό και κατάλληλο για γενικές περιπτώσεις.
Έτσι, η σύγκριση slices είναι δυνατή, αλλά απαιτεί ρητή υλοποίηση της σύγκρισης των στοιχείων.