capypad
0 Tage Serie
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
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main
 
import "fmt"
 
type Counter struct {
count int // unexported - lowercase
Total 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 exported
c.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