ερώτηση

Γνώση Υπολογιστών >> ερώτηση >  >> PC Αντιμετώπιση προβλημάτων

Πώς να χρησιμοποιήσετε τους δείκτες στο Golang [Πλήρης σεμινάριο]

Οι δείκτες στο Go είναι ένα ισχυρό εργαλείο για τη διαχείριση της μνήμης και το χειρισμό δεδομένων. Παρέχουν έναν τρόπο άμεσης αναφοράς στη διεύθυνση μνήμης μιας μεταβλητής, επιτρέποντας την αποτελεσματική πρόσβαση και τον χειρισμό των δομών δεδομένων.

Τι είναι ο δείκτης;

Στο Go, ένας δείκτης είναι μια μεταβλητή που αποθηκεύει τη διεύθυνση μιας άλλης μεταβλητής. Η διεύθυνση είναι η μοναδική θέση μνήμης όπου είναι αποθηκευμένη η μεταβλητή. Οι δείκτες δημιουργούνται χρησιμοποιώντας τον τελεστή `&`, ο οποίος επιστρέφει τη διεύθυνση μιας μεταβλητής.

Για παράδειγμα, ας υποθέσουμε ότι έχουμε μια μεταβλητή «αριθμός» τύπου «int». Μπορούμε να δημιουργήσουμε έναν δείκτη προς τον «αριθμό» χρησιμοποιώντας τον τελεστή «&»:

```πάει

αριθμός:=10

δείκτης :=&αριθμός

```

Η μεταβλητή «δείκτης» αποθηκεύει τώρα τη διεύθυνση μνήμης της μεταβλητής «αριθμός».

Αναφορά αναφοράς δείκτη

Για να αποκτήσουμε πρόσβαση στην τιμή ενός δείκτη, μπορούμε να χρησιμοποιήσουμε τον τελεστή `*`. Ο τελεστής `*` παραπέμπει σε έναν δείκτη, επιστρέφοντας την τιμή που είναι αποθηκευμένη στη διεύθυνση μνήμης που περιέχει ο δείκτης.

Στο παράδειγμά μας, μπορούμε να αναφέρουμε τη μεταβλητή «δείκτης» για πρόσβαση στην τιμή της μεταβλητής «αριθμός»:

```πάει

dereferencedNumber :=*δείκτης

```

Η μεταβλητή "dereferencedNumber" αποθηκεύει τώρα την τιμή της μεταβλητής "number", η οποία είναι 10.

Αριθμητική δείκτη

Οι δείκτες μπορούν επίσης να χρησιμοποιηθούν για την εκτέλεση αριθμητικών δεικτών. Η αριθμητική του δείκτη είναι η διαδικασία προσθήκης ή αφαίρεσης ακεραίων από έναν δείκτη για την αλλαγή της διεύθυνσης μνήμης στην οποία αναφέρεται.

Για παράδειγμα, ας υποθέσουμε ότι έχουμε έναν πίνακα ακεραίων που ονομάζεται "arr" και θέλουμε να επαναλάβουμε τα στοιχεία του πίνακα. Μπορούμε να χρησιμοποιήσουμε τον τελεστή `+` για να προσθέσουμε έναν ακέραιο σε έναν δείκτη για να μετακινηθούμε στο επόμενο στοιχείο του πίνακα:

```πάει

arr :=[5]int{1, 2, 3, 4, 5}

// Εκκίνηση ενός δείκτη στο πρώτο στοιχείο του πίνακα

δείκτης :=&arr[0]

// Επανάληψη μέσω του πίνακα χρησιμοποιώντας αριθμητική δείκτη

για i :=0; i // Αποαναφορά του δείκτη για να λάβετε την τιμή στον τρέχοντα δείκτη

τιμή :=*δείκτης

// Εκτυπώστε την τιμή

fmt.Println(τιμή)

// Αυξήστε τον δείκτη για να μετακινηθείτε στο επόμενο στοιχείο του πίνακα

δείκτη ++

}

```

Σε αυτό το παράδειγμα, ο δείκτης "δείκτης" ορίζεται αρχικά στη διεύθυνση του πρώτου στοιχείου του πίνακα. Στη συνέχεια, ο βρόχος «for» επαναλαμβάνεται μέσω του πίνακα, παραπέμποντας τον «δείκτη» σε κάθε επανάληψη για να ληφθεί η τιμή του τρέχοντος στοιχείου. Στη συνέχεια, ο «δείκτης» αυξάνεται για να μετακινηθεί στο επόμενο στοιχείο του πίνακα.

Μεταβίβαση δεικτών σε συναρτήσεις

Οι δείκτες μπορούν να μεταβιβαστούν ως ορίσματα σε συναρτήσεις. Αυτό επιτρέπει στις συναρτήσεις να χειρίζονται απευθείας τη διεύθυνση μνήμης των μεταβλητών, αντί να δημιουργούν ένα αντίγραφο της μεταβλητής.

Για παράδειγμα, ας υποθέσουμε ότι έχουμε μια συνάρτηση που ονομάζεται "increment" που αυξάνει την τιμή ενός ακέραιου αριθμού. Μπορούμε να περάσουμε έναν δείκτη σε έναν ακέραιο ως όρισμα στη συνάρτηση «increment», επιτρέποντας στη συνάρτηση να τροποποιήσει άμεσα την τιμή του ακέραιου:

```πάει

func increment(ptr *int) {

// Αποαναφορά του δείκτη για να λάβετε την τιμή στη διεύθυνση μνήμης

τιμή :=*ptr

// Αυξήστε την τιμή

τιμή++

// Αποθηκεύστε την αυξημένη τιμή πίσω στη διεύθυνση μνήμης

*ptr =τιμή

}

func main() {

// Δημιουργήστε μια ακέραια μεταβλητή

αριθμός:=10

// Περάστε έναν δείκτη στη μεταβλητή ως όρισμα στη συνάρτηση αύξησης

αύξηση (&αριθμός)

// Εκτυπώστε την αυξημένη τιμή

fmt.Println(αριθμός) // Έξοδος:11

}

```

Σε αυτό το παράδειγμα, η συνάρτηση «increment» παίρνει ως όρισμα έναν δείκτη σε έναν ακέραιο. Η συνάρτηση αποαναφορά του δείκτη για να πάρει την τιμή στη διεύθυνση μνήμης, αυξάνει την τιμή,

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα