前言:
文章内容可能需要C语言的基础知识,如果不懂C语言请自行学习, 编程不懂C语言跟咸鱼有什么区别 ,推荐一个不错的C语言课程Link: http://www.it666.com/my/course/2 如果你觉得这是一条广告,请自行忽略, talk is cheap show me the code!
1.什么是变量?
- 在C语言中可以改变的数据我们称之为变量
- Go语言和C语言一样, 改变的数据我们称之为变量
2.为什么要定义变量?
- 在C语言中就是为了告诉操作系统, 需要分配多大的存储空间来存储数据
- 在Go语言中也是一样
3.如何定义变量?
- C语言定义变量的格式: 数据类型 变量名称;
- Go语言中定义变量的格式: var 变量名称 数据类型;
4.如何使用变量?
- C语言中如果变量名称在等号的左边, 代表往变量中存储数据
- 如果变量名称在等号的右边或者当初出现, 代表从变量中获取存储的数据
- Go语言和C语言一样
5.变量的初始化
- 在C语言中第一次给变量赋值我们称之为变量的初始化
- 在C语言中变量的初始化有两种方式: 1.先定义在初始化 2.定义的同时初始化
- Go语言和C语言一样
注意点:
- 在Go语言中, 除了有和C语言一样的定义变量的格式以外, 还有一些其它的格式
- 如果定义的同时初始化, 那么定义变量时, 数据类型可以省略(系统会自动根据赋值推倒变量的类型)
- 如果定义的同时初始化, 那么定义变量时, 除了可以省略数据类型以外, 还可以利用:=继续省略var
实例:
1.先定义变量在初始化
var num int
num = 111
2.定义变量的同时初始化
2.1第一种方式:
var num int = 222
2.2第二种方式
var num = 222;
2.3第三种方式(只能在局部变量中使用)
num := 444
tip:在Go语言中, 可以利用%T输出变量的数据类型fmt.Printf("%T\n", num)
复制代码
6.变量的连续定义:
1.在C语言中我们可以通过逗号来连续定义变量
int a, b, c;复制代码
2.在Go语言中我们也可以通过逗号来连续定义变量
var a, b, c int复制代码
3.在Go语言中除了可以利用逗号来连续定义变量以外, 还可以使用变量组的语法来同时定义多个变量
var(
a int
b int
c int
)
复制代码
4.同时定义多个变量, 也可以在定义的时候初始化
4.1在C语言中我们可以通过
int a = 10, b = 20, c = 30;复制代码
4.2在Go语言中如果通过逗号定义多个变量, 我们可以通过
var a, b, c = 10, 20, 30复制代码
4.3在Go语言中如果通过变量组定义多个变量, 我们可以通过
var(
a int = 10
b int = 20
c int = 30
)复制代码
7.什么是局部变量?
- 在C语言中写在{}中或者函数中或者函数的形参, 就是局部变量
- Go语言中的局部变量和C语言一样
8.什么是全局变量?
- 在C语言中写在函数外面的就是全局变量
- Go语言中的全局变量和C语言一样
9.局部变量和全局变量的作用域
- 在C语言中局部变量的作用域是从定义的那一行开始, 直到遇到}结束或者遇到return为止
- Go语言中局部变量的作用域和C语言一样
- 在C语言中全局变量的作用域是从定义的那一行开始, 直到文件末尾为止
- Go语言中的全局变量, 只要定义了, 在定义之前和定义之后都可以使用
10.局部变量和全局变量的生命周期
- 在C语言中局部变量, 只有执行了才会分配存储空间, 只要离开作用域就会自动释放, C语言的局部变量存储在栈区
- Go语言局部变量的生命周期和C语言一样
- 在C语言中全局变量, 只要程序一启动就会分配存储空间, 只有程序关闭才会释放存储空间, C语言的全局变量存储在静态区(数据区)
- Go语言全局变量的生命周期和C语言一样
11.局部变量和全局变量的注意点
- 在C语言中相同的作用域内, 不能出现同名的局部变量
- Go语言和C语言一样, 相同干的作用域内, 不能出现同名的局部变量
- 在C语言中相同的作用域内, 可以出现同名的全局变量
- 在Go语言中相同的作用域内, 不能出现同名的全局变量
12.特殊点
- 在C语言中局部变量没有初始化存储的是垃圾数据, 在Go语言中局部变量没有初始化, 会默认初始化为0
- 在C语言中全局变量没有初始化存储的是0, Go语言和C语言一样
- 在Go语言中, 如果定义了一个局部变量, 但是没有使用这个局部变量, 编译会报错
- 在Go语言中, 如果定义了一个全局变量, 但是没有使用这个全局变量, 编译不会报错