go从0到1项目实战体系十三:全局/局部变量

发布时间:2023年12月23日

1. 全局/局部变量:

. 全局变量:
    a. C和Go语言中,定义在函数外面的就是全局变量.. 局部变量:
    a. C和Go语言中,写在{}中、函数中、函数的形参,就是局部变量.
    b. 只能在{}里面有效.

2. 作用域:

. 全局变量:
    a. C语言中,全局变量的作用域是从定义的那一行开始,直到文件末尾为止.
    b. Go语言中的只要定义了全局变量,在定义前、后都可以使用.
    c. 全局变量在任何地方都可以进行使用.
    d. main包里定义的全局变量别的包是无法引用的.. 局部变量:
    a. C和Go语言中,局部变量的作用域是,从定义的那一行开始,直到}结束或遇到return为止.
    b. 执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放.
    c. 不同的作用域,允许定义同名的变量.
    d. 使用变量的原则为就近原则,如果局部变量没有,就去全局变量中找.

3. 生命周期:

. 全局变量:
    a. C和Go语言中,只要程序一启动就会分配存储空间,只有程序关闭才会释放存储空间.
    b. C语言的全局变量存储在静态区(数据区). 局部变量:
    a. C和Go语言中,局部变量只有执行了才会分配存储空间,只要离开作用域就会自动释放.
    b. C语言的局部变量存储在栈区.

4. 注意点:

. 全局变量:
    a.C语言中相同的作用域内,可以出现同名的全局变量.
    b. 在Go语言中相同的作用域内,不能出现同名的全局变量.. 局部变量:
    a.C语言中相同的作用域内,不能出现同名的局部变量.
    b. Go语言中相同干的作用域内,不能出现同名的局部变量.

5. 特殊点:

.C语言中局部变量没有初始化存储的是垃圾数据,在Go语言中局部变量没有初始化,会默认初始化为0.. C和Go语言中,全局变量没有初始化存储的是0.
    a. Go语言有零值的概念.. 在Go语言中,定义了没有使用:
    a. 如果定义了一个局部变量,但是没有使用,编译会报错.
    b. 如果定义了一个全局变量,但是没有使用,编译不会报错.

6. 总结:

. 相同的作用域内,无论是全局变量还是局部变量,都不能出现同名的变量.. 变量离开作用域就不能使用.. 局部变量如果没有使用, 编译会报错, 全局变量如果没有使用, 编译不会报错.. :=只能用于局部变量, 不能用于全局变量.
文章来源:https://blog.csdn.net/m0_68635815/article/details/135164433
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。