天天看點

Go 語言變量作用域

作用域為已聲明辨別符所表示的常量、類型、變量、函數或包在源代碼中的作用範圍。

Go 語言中變量可以在三個地方聲明:

函數内定義的變量稱為局部變量

函數外定義的變量稱為全局變量

函數定義中的變量稱為形式參數

接下來讓我們具體了解局部變量、全局變量和形式參數。

在函數體内聲明的變量稱之為局部變量,它們的作用域隻在函數體内,參數和傳回值變量也是局部變量。

以下執行個體中 main() 函數使用了局部變量 a, b, c:

package main

import "fmt"

func main() {

   /* 聲明局部變量 */

   var a, b, c int

   /* 初始化參數 */

   a = 10

   b = 20

   c = a + b

   fmt.Printf ("結果: a = %d, b = %d and c = %d\n", a, b, c)

}

以上執行個體執行輸出結果為:

在函數體外聲明的變量稱之為全局變量,全局變量可以在整個包甚至外部包(被導出後)使用。

全局變量可以在任何函數中使用,以下執行個體示範了如何使用全局變量:

/* 聲明全局變量 */

var g int

   var a, b int

   g = a + b

   fmt.Printf("結果: a = %d, b = %d and g = %d\n", a, b, g)

Go 語言程式中全局變量與局部變量名稱可以相同,但是函數内的局部變量會被優先考慮。執行個體如下:

var g int = 20

   var g int = 10

   fmt.Printf ("結果: g = %d\n",  g)

形式參數會作為函數的局部變量來使用。執行個體如下:

var a int = 20;

   /* main 函數中聲明局部變量 */

   var a int = 10

   var b int = 20

   var c int = 0

   fmt.Printf("main()函數中 a = %d\n",  a);

   c = sum( a, b);

   fmt.Printf("main()函數中 c = %d\n",  c);

/* 函數定義-兩數相加 */

func sum(a, b int) int {

   fmt.Printf("sum() 函數中 a = %d\n",  a);

   fmt.Printf("sum() 函數中 b = %d\n",  b);

   return a + b;

不同類型的局部和全局變量預設值為:

資料類型

初始化預設值

int

float32

pointer

nil