Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Lokale und Globale Gültigkeitsbereiche | Funktionen
Quizzes & Challenges
Quizzes
Challenges
/
Einführung in Golang

bookLokale und Globale Gültigkeitsbereiche

An diesem Punkt ist es wichtig, das Konzept der Gültigkeitsbereiche (Scopes) zu betrachten, um zu verstehen, in welchen Bereichen bestimmte Variablen (oder Konstanten) zugänglich sind und wo nicht.

Der Gültigkeitsbereich einer Variablen oder Konstante definiert, wo sie verwendet werden kann.

Wenn eine Variable oder Konstante außerhalb eines Codeblocks deklariert wird, ist sie im gesamten Programm verfügbar und besitzt somit einen globalen Gültigkeitsbereich. Im folgenden Codebeispiel veranschaulicht die Konstante pi diesen globalen Gültigkeitsbereich:

index.go

index.go

copy
12345678
package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }

Im Gegensatz dazu bleibt eine innerhalb eines Codeblocks deklarierte Variable oder Konstante ausschließlich innerhalb dieses spezifischen Codeblocks sowie in allen darin verschachtelten Codeblöcken zugänglich, sofern zutreffend.

Die folgende Abbildung verdeutlicht die Unterschiede zwischen globalen und lokalen Gültigkeitsbereichen:

Der folgende Code zeigt Bereiche, in denen auf Variablen zugegriffen werden darf, sowie Stellen, an denen Fehler auftreten können:

index.go

index.go

copy
12345678910111213141516171819202122232425262728
package main import "fmt" func main() { var value_1 int = 1 // Condition 1 if(true) { var value_2 int = 2 // Condition 2 if (true) { var value_3 int = 3 fmt.Println("In Condition 2:", value_1) fmt.Println("In Condition 2:", value_2) fmt.Println("In Condition 2:", value_3) } fmt.Println("In Condition 1:", value_1) fmt.Println("In Condition 1:", value_2) fmt.Println("In Condition 1:", value_3) // Error here } fmt.Println("In Main:", value_1) fmt.Println("In Main:", value_2) // Error here fmt.Println("In Main:", value_3) // Error here }

Die Variable value_1 bleibt im gesamten main()-Codeblock zugänglich, einschließlich in verschachtelten Codeblöcken wie Bedingung 1 und Bedingung 2. Sie ist auch innerhalb von Bedingung 1 und deren verschachtelter Bedingung 2 verfügbar.

Ein direkter Zugriff außerhalb des main()-Blocks führt jedoch zu einem Fehler. Ebenso ist die Variable value_2, die innerhalb von Bedingung 2 deklariert wurde, nur in diesem spezifischen Codeblock zugänglich.

Es ist entscheidend, Gültigkeitsbereiche (Scopes) im Kontext von Funktionen zu berücksichtigen. Wenn wir eine Variable oder Konstante innerhalb einer Funktion deklarieren, bleibt sie auf diese Funktion beschränkt und ist in anderen Funktionen, einschließlich main(), nicht zugänglich.

Hinweis

main() fungiert als automatisch ausgeführte Funktion, wenn das Programm gestartet wird.

index.go

index.go

copy
12345678
func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }

Ein weiterer wichtiger Punkt ist, dass wir nicht zwei oder mehr Variablen mit demselben Namen im selben Gültigkeitsbereich oder in sich überschneidenden Gültigkeitsbereichen deklarieren können.

index.go

index.go

copy
1234567891011
func myFunc1() { var number int = 7 var number int = 9 // Error here } func myFunc2() { var number int = 7 if(2 > 1) { var number int = 9 // Error here } }

Es ist jedoch möglich, Variablen mit demselben Namen in unterschiedlichen Gültigkeitsbereichen zu deklarieren:

index.go

index.go

copy
1234567891011121314151617
package main import "fmt" func myFunc1() { var number int = 7 fmt.Println("In Func 1:", number) } func myFunc2() { var number int = 9 fmt.Println("In Func 2:", number) } func main() { myFunc1() myFunc2() }
question mark

In welchem Gültigkeitsbereich sollte var value int = 6 deklariert werden, um Fehler zu vermeiden?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain the difference between global and local scope with an example?

What happens if I try to access a variable outside its scope?

Can you clarify what is meant by overlapping scopes?

Awesome!

Completion rate improved to 1.96

bookLokale und Globale Gültigkeitsbereiche

Swipe um das Menü anzuzeigen

An diesem Punkt ist es wichtig, das Konzept der Gültigkeitsbereiche (Scopes) zu betrachten, um zu verstehen, in welchen Bereichen bestimmte Variablen (oder Konstanten) zugänglich sind und wo nicht.

Der Gültigkeitsbereich einer Variablen oder Konstante definiert, wo sie verwendet werden kann.

Wenn eine Variable oder Konstante außerhalb eines Codeblocks deklariert wird, ist sie im gesamten Programm verfügbar und besitzt somit einen globalen Gültigkeitsbereich. Im folgenden Codebeispiel veranschaulicht die Konstante pi diesen globalen Gültigkeitsbereich:

index.go

index.go

copy
12345678
package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }

Im Gegensatz dazu bleibt eine innerhalb eines Codeblocks deklarierte Variable oder Konstante ausschließlich innerhalb dieses spezifischen Codeblocks sowie in allen darin verschachtelten Codeblöcken zugänglich, sofern zutreffend.

Die folgende Abbildung verdeutlicht die Unterschiede zwischen globalen und lokalen Gültigkeitsbereichen:

Der folgende Code zeigt Bereiche, in denen auf Variablen zugegriffen werden darf, sowie Stellen, an denen Fehler auftreten können:

index.go

index.go

copy
12345678910111213141516171819202122232425262728
package main import "fmt" func main() { var value_1 int = 1 // Condition 1 if(true) { var value_2 int = 2 // Condition 2 if (true) { var value_3 int = 3 fmt.Println("In Condition 2:", value_1) fmt.Println("In Condition 2:", value_2) fmt.Println("In Condition 2:", value_3) } fmt.Println("In Condition 1:", value_1) fmt.Println("In Condition 1:", value_2) fmt.Println("In Condition 1:", value_3) // Error here } fmt.Println("In Main:", value_1) fmt.Println("In Main:", value_2) // Error here fmt.Println("In Main:", value_3) // Error here }

Die Variable value_1 bleibt im gesamten main()-Codeblock zugänglich, einschließlich in verschachtelten Codeblöcken wie Bedingung 1 und Bedingung 2. Sie ist auch innerhalb von Bedingung 1 und deren verschachtelter Bedingung 2 verfügbar.

Ein direkter Zugriff außerhalb des main()-Blocks führt jedoch zu einem Fehler. Ebenso ist die Variable value_2, die innerhalb von Bedingung 2 deklariert wurde, nur in diesem spezifischen Codeblock zugänglich.

Es ist entscheidend, Gültigkeitsbereiche (Scopes) im Kontext von Funktionen zu berücksichtigen. Wenn wir eine Variable oder Konstante innerhalb einer Funktion deklarieren, bleibt sie auf diese Funktion beschränkt und ist in anderen Funktionen, einschließlich main(), nicht zugänglich.

Hinweis

main() fungiert als automatisch ausgeführte Funktion, wenn das Programm gestartet wird.

index.go

index.go

copy
12345678
func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }

Ein weiterer wichtiger Punkt ist, dass wir nicht zwei oder mehr Variablen mit demselben Namen im selben Gültigkeitsbereich oder in sich überschneidenden Gültigkeitsbereichen deklarieren können.

index.go

index.go

copy
1234567891011
func myFunc1() { var number int = 7 var number int = 9 // Error here } func myFunc2() { var number int = 7 if(2 > 1) { var number int = 9 // Error here } }

Es ist jedoch möglich, Variablen mit demselben Namen in unterschiedlichen Gültigkeitsbereichen zu deklarieren:

index.go

index.go

copy
1234567891011121314151617
package main import "fmt" func myFunc1() { var number int = 7 fmt.Println("In Func 1:", number) } func myFunc2() { var number int = 9 fmt.Println("In Func 2:", number) } func main() { myFunc1() myFunc2() }
question mark

In welchem Gültigkeitsbereich sollte var value int = 6 deklariert werden, um Fehler zu vermeiden?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 2
some-alt