1、变量声明
Go语言的变量声明方式与C和C++语言有明显的不同。Go语言引入了关键字var,并且Go语言把变量类型放在变量名之后;示例如下:
1)、声明一个变量
//定义一个类型为"int"的变量
var vName int
//定义一个类型为"string"的变量
var vName2 string
//定义一个类型为"int",且大小为10的数组变量
var vName3 [10]int
//定义一个类型为"int"的数组切片
var vName4 []int
//定义一个结构体变量
var vName5 struct{
vn int
}
//定义一个类型为"int"的指针变量
var vName6 *int
//定义一个数据字典,key类型为"string",value类型为"int"
var vName7 map[string]int
通过上面的例子我们可以看看出,变量声明语句不需要使用分号作为结束符,并通过var关键字进行声明;同时Go语言为了避免程序员需要重复写关键字var,用关键字var可将若干个需要声明的变量放置在一起,示例如下:
var (
vName1 int
vName2 string
)
2)、声明多个相同类型的变量
//定义类型都是"int"的三个变量
var vName1,vName2,vName3 int
2、变量初始化
var关键字可以保留,但不再是必要的元素,示例如下:
//定义一个类型为"int"的变量,并对其初始化值
var vName1 int=1
//定义一个变量,但未指定数据类型,并对其初始化值
var vName2 = 1
//定义一个变量,且对其直接初始化值
vName :=1
通过上面三种实例,可以看出第三种用法是最简洁的;这里Go语言引入的另外一个字符(冒号和等号的组合:=),表示声明和初始化。
同时指定类型已不再是必需的,Go语言编译器可以从初始化表达式的值(右侧)推到出该变量应该声明为哪种类型。
对于:=左侧的变量不能同时声明多次,Go语言是不允许的,示例如下:
i :=1
//这个是不允许的
i :=2
或
var i int
//这个是不允许的
i :=1
因为符号:=表示声明和初始化,所以是不允许的,运行系统后会提示:no new variables no left side of:=
3、变量赋值
在Go语法中,变量初始化和赋值是两个不同的概念。
//声明一个类型为"int",名称为"vName"的变量
var vName int
//为变量"vName"赋值
vName=12
4、匿名变量
_(下划线)是个特殊的变量名,任何赋予它的值都会被丢弃。示例如下:
//将25赋予变量名称为"vName",并同时丢弃12
_,vName:12,25
通过上面的例子,我们可能会想到Go语言中多返回值的函数是否也可以使用匿名变量”_”哪?
假设我们有一个获取姓名的函数(GetFullName),它返回3个值,分别为firstName,lastName和nickName,示例如下:
//定义一个函数,并返回3个类型都为"string"
func GetFullName() (firstName,lastName,nickName string){
return "my","wang","xiaoming"
}
如果我们只想获取lastName,则函数调用语句如下所示:
_,lastName,_=GetFullName()
5、定义常量
在Go语言中和大部分开发语言一样,用关键字”const”定义,示例如下:
//定义一个类型为"int"的常量
const utype int=3
//定义一个无类型的浮点常量
const zero=0.0
常量的定义应注意以下一点:
1)、常量的值不能是在运行期才能得出结果的值
也就是说常量的值可以是在编译期运算的常量表达式