您好,登录后才能下订单哦!
今天就跟大家聊聊有关Go语言中如何使用变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一、变量定义的格式
C++的变量定义表达式如下所示:
Type name = expression;例如 int number = 10; // 表示的是 一个数据类型是int,名字叫做 number 的变量,它的初始值是 10。
Go的变量定义表达式如下所示:
var name type = expression ,例如 var number int = 10 // 表示的是 一个数据类型是int,名字叫做 number 的变量,它的初始值是 10。
区别:
1.C++ 需要在一句话的结尾 加上一个;号,用来表示语句结束,Go语言则不需要;号,它是通过换行来表示该语句结束的。
2.C++ 和Go的语句定义格式完全不同,C++是 Type name = expression; Go是var name type = expression
3.C++和Go语言没有赋初始值的变量的初始化数值不相同。
1)C++的初始值不指定的话,例如int number; number的值有可能是0,也有可能是随机值,这个取决于number 是一个局部变量还是一个全局变量或者static变量,局部变量的话,number的值是个随机值,全局和static变量的话,number的值会是0。
2) Go的初始值不指定的话,例如var number int; 这里会被初始化为0。Go语言里面不存在未初始化的变量。Go规定,如果表达式省略,初始化数值,数字对应0,布尔型对应false,字符串对应"",对于接口和引用类型为nil。
4.C++和Go语言的变量声明,Go更加的强大
C++ 中 变量没有初始化的话,可以采用变量列表的方式,否则只能一条语句一个变量,例如:
int a,b,c; // 其中a,b,c 都必须是整型,类型必须一致。int a = 10; // 必须一个变量一条语句
Go 中书写方式更为灵活多变,例如:
var a, b, c int // 表示a,b,c 都是int型数据,同时初始化为0var a , b, c = true, 10, "hello" // 省略了数据类型,并且 a,b,c可以分别是几种不同的数据类型,其中a是bool型,b是int型, c是string型。
5.Go语言中有变量和短变量声明两种方式,C++ 中则只有变量
短变量声明格式为:name := expression // name的类型通过expression来决定。因为它短小,灵活,主要用于局部变量的声明和初始化。
var声明的变量通常为那些跟初始化表达式类型不一致的局部变量,或者后面才对变量赋值的情况。
1)个人认为短变量声明存在的主要原因是,Go语言的 多种类型变量可以在同一行赋值的支持,例如 a, b := 1,true // 在这里a,b可以都是新的变量并且不是初始化的时候,或者a,b中有一个是新变量即可。var变量对于后者的支持就不太好,必须是两行才能保证,如下所示:
var a , b = 0 , false // step1:a, b必须都得先定义出来a,b = 1, true // step 2: a,b 在进行赋值
而短变量只需要一句就可以表示。
2)_表示短变量里面,定义了但是不使用的变量,常用于返回值多个的时候,其中一个不被使用的变量。(备注,Go中定义了变量一定要被使用,不然编译出错。)例如:
_, a := func() // 其中func有两个返回值,而其中第一个返回值,不被使用。
二、变量的作用域和生存周期
在谈C++和Go的区别之前,我们先看一看,作用域和生命周期是什么东西。
作用域:存在于编译阶段,用来表示变量或者方法的适用范围,一般都是大括号内的那一部分,叫做一个程序块,这一块内容,便是一个作用域。
生命周期:是执行阶段的概念,从一个变量实例被创建,到该变量被释放的时间周期。
区别:
1.C++语言,在作用域范围这个概念下,{}之内声明的变量,在该代码段可以被使用,在该{}之外生成的同名变量,会被覆盖掉。
Go语言,在作用域概念下,与C++语言并无区别。不过短变量声明使用有一个点要注意。例如:
var num intvar b string{ a, num := false, 5 // 这里的num会被认为是一个新变量 b = “hello” // 这里的b与{}外的b是同一个变量}
看完上述内容,你们对Go语言中如何使用变量有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。