go / beginner
Snippet
Exportierte vs. Nicht exportierte Bezeichner
In Go wird die Sichtbarkeit durch Groß- und Kleinschreibung bestimmt. Bezeichner, die mit einem Großbuchstaben beginnen, sind exportiert (öffentlich) und können von anderen Paketen aus aufgerufen werden. Diejenigen, die mit einem Kleinbuchstaben beginnen, sind nicht exportiert (privat) und können nur innerhalb desselben Pakets verwendet werden. Diese einfache Regel ersetzt Schlüsselwörter wie public oder private, die man in anderen Sprachen findet.
snippet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package mainimport "fmt"type Counter struct {count int // unexported - lowercaseTotal int // exported - uppercase}func main() {c := Counter{count: 10, Total: 20}fmt.Println("Total:", c.Total) // Works// fmt.Println("count:", c.count) // Error: count not exportedc.Total = 30 // Works// c.count = 40 // Error: count not exported}
Erklärung
1
count int
Kleinbuchstaben-Bezeichner - privat für dieses Paket, kann nicht extern zugegriffen werden
2
Total int
Großbuchstaben-Bezeichner - öffentlich, zugänglich von jedem Paket, das dieses importiert
3
c.Total = 30
Erlaubt, weil Total exportiert ist
4
// c.count = 40 // Error
Dies würde einen Kompilierfehler verursachen, weil count nicht exportiert ist