變量來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量能夠經過變量名訪問。函數
Go語言是靜態類型語言,不能在運行期間改變變量類型。使用關鍵字 var 定義變量,自動初始化爲零值。若是提供初始化值,可省略變量類型,由編譯器自動推斷。spa
Go語言中變量能夠在三個地方聲明:code
函數外定義的變量稱爲全局變量
函數內定義的變量稱爲局部變量
函數定義中的變量稱爲形式參數
接下來讓咱們具體瞭解全局變量、局部變量和形式參數。blog
在函數體外聲明的變量稱之爲全局變量,全局變量能夠在整個包甚至外部包(被導出後)使用。作用域
在函數體內聲明的變量稱之爲局部變量,它們的做用域只在函數體內,參數和返回值變量也是局部變量。編譯器
形式參數會做爲函數的局部變量來使用。數學
第一種,指定變量類型,聲明後若不賦值,使用默認值。string
var name string
第二種,根據值自行斷定變量類型。編譯
var age = 18
第三種,變量聲明並賦值class
var class string = "Linux"
第四種,一次性聲明多個變量
var Mon, Tues, Wed, Thur, Fri, Sat, Sun int var ( Monday int Tuesday int Wednesday int Thursday int Friday int Saturday int Sunday int )
第五種,短聲明變量
在函數內部,能夠使用更簡略的 ":=" 方式定義變量。":=" 簡潔賦值語句在明確類型的地方,能夠用於替代 var 定義。
package main func main() { name := "oldboy" age, class := 18, "Linux" _, _, _ = name, age, class }
注意:":=" 結構不能在函數外使用。
第六種,形式參數
package main func main() { } func sum(a, b int) (c int) { c = a + b return }
Go語言程序中全局變量與局部變量名稱能夠相同,可是函數內的局部變量會被優先考慮。實例以下:
ackage main import "fmt" // 聲明全局變量 var variable string = "全局變量" func main() { // 聲明局部變量 var variable string = "局部變量" fmt.Printf("結果:%s\n", variable) }
運行結果:
結果:局部變量
多變量賦值時,先計算全部相關值,而後再從左到右依次賦值。
package main import "fmt" func main() { data, i := [4]string{"course", "Python", "Linux", "Golang"}, 0 i, data[i] = 2, "oldboy" fmt.Printf("i:%v,data:%v\n", i, data) }
輸出結果:
i:2,data:[oldboy Python Linux Golang]