Idź - zasady zakresu

Zakres w każdym programowaniu to region programu, w którym może istnieć zdefiniowana zmienna, a poza nią nie można uzyskać do niej dostępu. Istnieją trzy miejsca, w których można zadeklarować zmienne w języku programowania Go -

  • Wewnątrz funkcji lub bloku (local zmienne)

  • Poza wszystkimi funkcjami (global zmienne)

  • W definicji parametrów funkcji (formal parametry)

Dowiedzmy się, jakie są local i global zmienne i jakie są formal parametry.

Zmienne lokalne

Zmienne zadeklarowane wewnątrz funkcji lub bloku nazywane są zmiennymi lokalnymi. Mogą być używane tylko przez instrukcje, które znajdują się wewnątrz tej funkcji lub bloku kodu. Zmienne lokalne nie są znane z funkcji innych niż ich własne. Poniższy przykład używa zmiennych lokalnych. Tutaj wszystkie zmienne a, b i c są lokalne dla funkcji main ().

package main

import "fmt"

func main() {
   /* local variable declaration */
   var a, b, c int 

   /* actual initialization */
   a = 10
   b = 20
   c = a + b

   fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c)
}

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -

value of a = 10, b = 20 and c = 30

Zmienne globalne

Zmienne globalne są definiowane poza funkcją, zwykle w górnej części programu. Zmienne globalne zachowują swoją wartość przez cały okres istnienia programu i można uzyskać do nich dostęp w ramach dowolnej funkcji zdefiniowanej dla programu.

Dostęp do zmiennej globalnej można uzyskać za pomocą dowolnej funkcji. Oznacza to, że zmienna globalna jest dostępna do użycia w całym programie po jej zadeklarowaniu. Poniższy przykład używa zmiennych globalnych i lokalnych -

package main

import "fmt"
 
/* global variable declaration */
var g int
 
func main() {
   /* local variable declaration */
   var a, b int

   /* actual initialization */
   a = 10
   b = 20
   g = a + b

   fmt.Printf("value of a = %d, b = %d and g = %d\n", a, b, g)
}

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -

value of a = 10, b = 20 and g = 30

Program może mieć taką samą nazwę dla zmiennych lokalnych i globalnych, ale wartość zmiennej lokalnej wewnątrz funkcji ma pierwszeństwo. Na przykład -

package main

import "fmt"
 
/* global variable declaration */
var g int = 20
 
func main() {
   /* local variable declaration */
   var g int = 10
 
   fmt.Printf ("value of g = %d\n",  g)
}

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -

value of g = 10

Parametry formalne

Parametry formalne są traktowane jako zmienne lokalne z tą funkcją i mają pierwszeństwo przed zmiennymi globalnymi. Na przykład -

package main

import "fmt"
 
/* global variable declaration */
var a int = 20;
 
func main() {
   /* local variable declaration in main function */
   var a int = 10
   var b int = 20
   var c int = 0

   fmt.Printf("value of a in main() = %d\n",  a);
   c = sum( a, b);
   fmt.Printf("value of c in main() = %d\n",  c);
}
/* function to add two integers */
func sum(a, b int) int {
   fmt.Printf("value of a in sum() = %d\n",  a);
   fmt.Printf("value of b in sum() = %d\n",  b);

   return a + b;
}

Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -

value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30

Inicjalizacja zmiennych lokalnych i globalnych

Zmienne lokalne i globalne są inicjowane do wartości domyślnych, czyli 0; podczas gdy wskaźniki są inicjalizowane na zero.

Typ danych Początkowa wartość domyślna
int 0
float32 0
wskaźnik zero