變數有三種:1、函數內定義的變數稱為局部變量,其作用域僅限於函數內部;局部變數不是一直存在的,它只在定義它的函數被呼叫後存在,函數呼叫結束後這個局部變數就會被銷毀。 2.函數外定義的變數稱為全域變量,其只需要在一個原始檔中定義,就可以在所有來源檔案中使用;全域變數宣告必須以var關鍵字開頭,如果想要在外部套件中使用全域變數的首字母必須大寫。 3.函數定義中的變數稱為形式參數。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
Go語言是靜態型別語言,因此變數(variable)是有明確類型的,編譯器也會檢查變數類型的正確性。在數學概念中,變數表示沒有固定值且可改變的數。但從電腦系統實現角度來看,變數是一段或多段用來儲存資料的記憶體。
一個變數(常數、型別或函數)在程式中都有一定的作用範圍,稱之為作用域。
了解變數的作用域對我們學習Go語言來說是比較重要的,因為Go語言會在編譯時檢查每個變數是否使用過,一旦出現未使用的變量,就會報編譯錯誤。如果無法理解變數的作用域,就有可能會帶來一些不明所以的編譯錯誤。
根據變數定義位置的不同,可以分為以下三種:
函數內定義的變數稱為局部變數
函數外定義的變數稱為全域變數
函數定義中的變數稱為形式參數
下面就來分別介紹一下。
局部變數
在函數內部宣告/定義的變數叫做局部變量,局部變數的作用域僅限於函數內部。在函數內部定義的變量,函數的 參數 和 回傳值,if 和 for 結構內部所使用的變數等都是局部變數。
局部變數不是一直存在的,它只在定義它的函數被呼叫後存在,函數呼叫結束後這個局部變數就會被銷毀。
【範例】下面的 main() 函數中使用到了局部變數 a、b、c。
package main import ( "fmt" ) func main() { //声明局部变量 a 和 b 并赋值 var a int = 3 var b int = 4 //声明局部变量 c 并计算 a 和 b 的和 c := a + b fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c) }
使用 {} 可以限制變數的作用域
package main import "fmt" func main() { { name := "HaiCoder" fmt.Println("Name =", name) } }##我們使用 { } 將變數 name 的作用域限制在 {} 內部,也就是此時的變數 name 的作用域僅在 {} 內,name 則是局部變數。 附註:在變數的作用域外,存取變量,程式報錯
package main import "fmt" func main() { for i := 0; i < 3; i++{ fmt.Print(i) fmt.Print(" ") } fmt.Print(i) }我們在for 迴圈的內部定義了一個局部變數 i並使用,此時變數 i 的作用域僅限於for 迴圈的 {} 內部。最後我們在 for 迴圈的 {} 外部存取變數 i 程式報錯,因為變數 i 超出了作用域。
全域變數
在函數體外宣告的變數稱為全域變量,全域變數只需要在一個原始檔中定義,就可以在所有原始檔中使用,當然,不包含這個全域變數的來源檔案需要使用「import」關鍵字引入全域變數所在的來源檔案之後才能使用這個全域變數。 全域變數宣告必須以 var 關鍵字開頭,如果想要在外部套件中使用全域變數的首字母必須大寫。 【範例】下面程式碼中,第 6 行定義了全域變數 c。package main import "fmt" //声明全局变量 var c int func main() { //声明局部变量 var a, b int //初始化参数 a = 3 b = 4 c = a + b fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c) }
說明:Go語言程式中全域變數與局部變數名稱可以相同,但是函數體內的局部變數會被優先考慮。
package main import "fmt" //声明全局变量 var a float32 = 3.14 func main() { //声明局部变量 var a int = 3 fmt.Printf("a = %d\n", a) }
形式參數
#在定義函數時函數名稱後面括號中的變數叫做形式參數(簡稱形參)。形式參數只會在函數呼叫時才會生效,函數呼叫結束後就會被銷毀,當函數未被呼叫時,函數的形參並不佔用實際的儲存單元,也沒有實際值。 形式參數會作為函數的局部變數來使用。 【範例】下面程式碼中第 21 行定義了形式參數 a 和 b。package main import ( "fmt" ) //全局变量 a var a int = 13 func main() { //局部变量 a 和 b var a int = 3 var b int = 4 fmt.Printf("main() 函数中 a = %d\n", a) fmt.Printf("main() 函数中 b = %d\n", b) 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) num := a + b return num }
以上是Go語言的變數有幾種類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!