一、局部變量
1 定義在{}里面的變量時(shí)局部變量,只能在{}里面有效
2 執(zhí)行到定義的那句話,開(kāi)始分配內(nèi)存空間,離開(kāi)作用域自動(dòng)進(jìn)行釋放
3 作用域,就是變量作用的范圍
package main
import "fmt"
func test() {
i := 111
fmt.Println("i=", i)
}
func main() {
test()
{
i := 10
fmt.Printf("i=%v\n", i)
}
// i=12 錯(cuò)誤
if flag := 3; flag == 3 {
fmt.Println("flag=", flag)
}
//fmt.Println("flag=", flag) 錯(cuò)誤
}
二、全局變量
1 定義在函數(shù)外部的變量稱為全局變量
2 全局變量在任何地方都可以進(jìn)行使用
package main
import "fmt"
func test() {
fmt.Println("a= ", a)
}
var a int
func main() {
a = 12
fmt.Println("a= ", a)
test()
}
三、不同作用域中,同名變量
1 不同的作用域,允許定義同名的變量
2 使用變量的原則,就近原則,如果局部變量沒(méi)有,就去全局變量中找
package main
import "fmt"
//定義一個(gè)全局變量
var a byte
func main() {
var a int
fmt.Printf("1: a type is %T\n", a) //int
{
var a float32
fmt.Printf("2: a type is %T\n", a) // float32
}
test()
}
func test() {
fmt.Printf("3: a type is %T\n", a) //uint8
}
補(bǔ)充:golang全局變量的坑-盡量別用全局變量
看圖片吧~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- 詳解Go語(yǔ)言變量作用域
- go語(yǔ)言的初始化順序,包,變量,init詳解
- go語(yǔ)言的工作空間和GOPATH環(huán)境變量介紹
- Go語(yǔ)言變量創(chuàng)建的五種方法
- go語(yǔ)言同步教程之條件變量
- Go語(yǔ)言基本的語(yǔ)法和內(nèi)置數(shù)據(jù)類型初探
- Go語(yǔ)言變量與基礎(chǔ)數(shù)據(jù)類型詳情