首页 > 文章列表 > go语言 全局变量和局部变量实例

go语言 全局变量和局部变量实例

golang
446 2022-12-17

一、局部变量

1 定义在{}里面的变量时局部变量,只能在{}里面有效

2 执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放

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 错误

 

 if flag := 3; flag == 3 {

 fmt.Println("flag=", flag)

 }

 //fmt.Println("flag=", flag) 错误

}

二、全局变量

1 定义在函数外部的变量称为全局变量

2 全局变量在任何地方都可以进行使用


package main 

import "fmt" 

func test() {

 fmt.Println("a= ", a)

}

 

var a int 

func main() {

 a = 12

 fmt.Println("a= ", a)

 test()

}

三、不同作用域中,同名变量

1 不同的作用域,允许定义同名的变量

2 使用变量的原则,就近原则,如果局部变量没有,就去全局变量中找


package main 

import "fmt"

 

//定义一个全局变量

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

}

补充:golang全局变量的坑-尽量别用全局变量

看图片吧~