8.18Go之变量作用域

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是形参
*/

 

原文地址:https://www.cnblogs.com/JunkingBoy/p/15169314.html