8.18Go之变量作用域
变量位置不同其作用域可以分为以下三个类型
局部变量--->函数内定义的变量
全局变量--->函数外定义的变量
形参--->参数列表当中定义的变量
局部变量
特点:
-
作用域只在函数体内,函数的参数和返回值变量都属于局部变量。
-
函数调用结束后这个局部变量就会被销毁。
-
Go语言中局部变量声明以后必须使用
示例:
package main
import "fmt"
func main() {
var a = 3
var b = 4
c := a+b
fmt.Println("a与b的和为:", c)
}
全局变量
特点:
-
函数体外声明的变量
-
全局变量只需要在一个源文件中定义,就可以在所有源文件中使用--->需要使用
import
关键字引入全局变量所在的包 -
全局变量声明必须以
var
关键字开头,在外部包中使用全局变量的首字母必须大写。 -
Go中全局变量可以声明不使用
示例:
package main
import "fmt"
var globalVariable int //这是一个全局变量
func main() {
c := 3 //这是一个局部变量
/*
声明了全局变量但不使用
*/
fmt.Println(c)
}
Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。
形参
特点:
-
定义函数时函数名后面括号中的变量叫做形式参数(简称形参)
-
形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,
-
函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。
示例:
package main
import "fmt"
func bubbleSortNo2(brr []int) {
for i := 0; i < (len(brr)-1); i++ {
for j := 0; j < (len(brr) - 1 - i); j++ {
if brr[j]-brr[j+1] > 0 {
temp := brr[j]
brr[j] = brr[j+1]
brr[j+1] = temp
}
}
}
for i, j := range brr {
fmt.Println("第", i, "号为的值为:", j)
}
}
func main() {
arrays := []int{7,9,6,5,3}
bubbleSortNo2(arrays)
}
/*
brr是形参
*/