Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τις διαφορές μεταξύ των τελεστών new και make στη γλώσσα Go;

sobes.tech AI

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

Στη Go, οι τελεστές new και make χρησιμοποιούνται για την κατανομή μνήμης, αλλά εφαρμόζονται σε διαφορετικούς τύπους και έχουν διαφορετικούς σκοπούς:

  • new(T) καταχωρεί μνήμη για τον τύπο T, την αρχικοποιεί με την τιμή μηδέν και επιστρέφει έναν δείκτη *T. Χρησιμοποιείται για όλους τους τύπους, αλλά επιστρέφει δείκτη.

  • make(T, args...) χρησιμοποιείται μόνο για την αρχικοποίηση slices, χαρτών (map) και καναλιών (chan). Επιστρέφει μια αρχικοποιημένη τιμή του τύπου T (όχι δείκτη).

Παράδειγμα:

p := new(int)       // p έχει τύπο *int, δείχνει στο 0
s := make([]int, 5) // s είναι ένα slice μήκους 5, έτοιμο για χρήση
m := make(map[string]int) // αρχικοποιημένος χάρτης

Σύνοψη:

  • new — καταχωρεί μνήμη και επιστρέφει δείκτη.
  • make — αρχικοποιεί σύνθετες δομές δεδομένων και επιστρέφει την τιμή.