玩转Go语言之变量

前言:

 文章内容可能需要C语言的基础知识,如果不懂C语言请自行学习, 编程不懂C语言跟咸鱼有什么区别 ,推荐一个不错的C语言课程Link: http://www.it666.com/my/course/2 如果你觉得这是一条广告,请自行忽略, talk is cheap show me the code!

1.什么是变量?

  1. 在C语言中可以改变的数据我们称之为变量
  2. Go语言和C语言一样, 改变的数据我们称之为变量

2.为什么要定义变量?

  1. 在C语言中就是为了告诉操作系统, 需要分配多大的存储空间来存储数据
  2. 在Go语言中也是一样

3.如何定义变量?

  1. C语言定义变量的格式: 数据类型 变量名称;
  2. Go语言中定义变量的格式: var 变量名称 数据类型;

4.如何使用变量?

  1. C语言中如果变量名称在等号的左边, 代表往变量中存储数据
  2. 如果变量名称在等号的右边或者当初出现, 代表从变量中获取存储的数据
  3. Go语言和C语言一样

5.变量的初始化

  1. 在C语言中第一次给变量赋值我们称之为变量的初始化
  2. 在C语言中变量的初始化有两种方式: 1.先定义在初始化 2.定义的同时初始化
  3. Go语言和C语言一样

注意点:

  1. 在Go语言中, 除了有和C语言一样的定义变量的格式以外, 还有一些其它的格式
  2. 如果定义的同时初始化, 那么定义变量时, 数据类型可以省略(系统会自动根据赋值推倒变量的类型)
  3. 如果定义的同时初始化, 那么定义变量时, 除了可以省略数据类型以外, 还可以利用:=继续省略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.什么是局部变量?

  1. 在C语言中写在{}中或者函数中或者函数的形参, 就是局部变量
  2. Go语言中的局部变量和C语言一样

8.什么是全局变量?

  1. 在C语言中写在函数外面的就是全局变量
  2. Go语言中的全局变量和C语言一样

9.局部变量和全局变量的作用域

  1. 在C语言中局部变量的作用域是从定义的那一行开始, 直到遇到}结束或者遇到return为止
  2. Go语言中局部变量的作用域和C语言一样
  3. 在C语言中全局变量的作用域是从定义的那一行开始, 直到文件末尾为止
  4. Go语言中的全局变量, 只要定义了, 在定义之前和定义之后都可以使用

10.局部变量和全局变量的生命周期

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

11.局部变量和全局变量的注意点

  1. 在C语言中相同的作用域内, 不能出现同名的局部变量
  2. Go语言和C语言一样, 相同干的作用域内, 不能出现同名的局部变量
  3. 在C语言中相同的作用域内, 可以出现同名的全局变量
  4. 在Go语言中相同的作用域内, 不能出现同名的全局变量

12.特殊点

  1. 在C语言中局部变量没有初始化存储的是垃圾数据, 在Go语言中局部变量没有初始化, 会默认初始化为0
  2. 在C语言中全局变量没有初始化存储的是0, Go语言和C语言一样
  3. 在Go语言中, 如果定义了一个局部变量, 但是没有使用这个局部变量, 编译会报错
  4. 在Go语言中, 如果定义了一个全局变量, 但是没有使用这个全局变量, 编译不会报错


转载于:https://juejin.im/post/5ba1e9b75188255c890126a6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值