Sobes.tech
Junior — Middle

Πώς μπορεί κανείς να δηλώσει μια μεταβλητή με περιορισμένη εμβέλεια μέσα σε μια κλάση ή module;

sobes.tech AI

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

Στη Go, η εμβέλεια μιας μεταβλητής καθορίζεται από το όνομά της και το μέρος όπου δηλώνεται. Για να δηλώσετε μια μεταβλητή με περιορισμένη εμβέλεια μέσα σε μια κλάση (δομή) ή ένα module (πακέτο), χρησιμοποιούνται οι ακόλουθες προσεγγίσεις:

  • Μέσα σε μια συνάρτηση ή μέθοδο: η μεταβλητή δηλώνεται με var ή με μια σύντομη δήλωση := και είναι ορατή μόνο μέσα σε αυτή τη συνάρτηση ή μέθοδο.

  • Μέσα σε ένα πακέτο: μεταβλητές, συναρτήσεις, τύποι των οποίων το όνομα αρχίζει με μικρό γράμμα, είναι ορατές μόνο μέσα στο πακέτο (μόριο). Αν το όνομα αρχίζει με κεφαλαίο γράμμα, εξάγεται και είναι διαθέσιμη από άλλα πακέτα.

Παράδειγμα:

package mypackage

var packageVar = 10 // ορατή μόνο μέσα στο πακέτο mypackage

func myFunc() {
    var localVar = 5 // ορατή μόνο μέσα στη myFunc
    _ = localVar
}

// Εξαγόμενη μεταβλητή
var ExportedVar = 20 // προσβάσιμη από άλλα πακέτα

Έτσι, για να περιορίσετε την εμβέλεια μιας μεταβλητής μέσα σε ένα module, πρέπει να χρησιμοποιείτε ονόματα με μικρά γράμματα και να δηλώνετε τις μεταβλητές εκτός συναρτήσεων, αλλά μέσα στο πακέτο. Για να περιορίσετε την ορατότητα μέσα σε μια κλάση (δομή), συνήθως χρησιμοποιούνται πεδία δομής, όπου η ορατότητα καθορίζεται επίσης από το πρώτο γράμμα του ονόματος.