Golang教程:变量
本文内容纲要:
-声明单一变量
-声明一个带初值的变量
-类型推导
-多变量声明
-速记声明
声明单一变量
声明一个变量的语法为:varnametype
,例如
packagemain
import"fmt"
funcmain(){
varageint//variabledeclaration
fmt.Println("myageis",age)
}
语句varageint
声明了一个类型为int
,名称为age
的变量。在这里我们没有给它赋任何值。如果一个变量没有被赋予任何值,Go会自动将这个变量初始化为其类型的0值,比如这里的age
将被赋值为0。运行这个程序,将得到如下输出:
myageis0
一个变量可以被赋予其类型的任何值。例如,在上例中,age
可以被赋予任何整型值:
packagemain
import"fmt"
funcmain(){
varageint//variabledeclaration
fmt.Println("myageis",age)
age=29//assignment
fmt.Println("myageis",age)
age=54//assignment
fmt.Println("mynewageis",age)
}
输出如下:
myageis0
myageis29
mynewageis54
声明一个带初值的变量
在声明变量时可以指定其初始值。
声明一个带初值的变量的语法为:varnametype=initialvalue
,例如:
packagemain
import"fmt"
funcmain(){
varageint=29//variabledeclarationwithinitialvalue
fmt.Println("myageis",age)
}
在上面的程序中,age
是一个int
型的变量,初始值为29
。运行上面的程序,输出如下。可以看到age
的初始值确实为29
。
myageis29
类型推导
如果声明一个变量时提供了初始值,Go可以根据该初始值来自动推导变量的类型。因此如果声明变量时提供了初始值,就可以不必指定其类型。
也就是说,如果声明变量的形式为:varname=initialvalue
,Go将根据initialvalue
自动推导变量name
的类型。
在下面的例子中,你可以看到声明变量age
时并没有指定其类型。因为age
的初值为29
,Go自动推断其类型为int
。
packagemain
import"fmt"
funcmain(){
varage=29//typewillbeinferred
fmt.Println("myageis",age)
}
多变量声明
多个变量可以在一条语句中声明。
多变量声明的语法为:varname1,name2type=initialvalue1,initialvalue2
,例如:
packagemain
import"fmt"
funcmain(){
varwidth,heightint=100,50//declaringmultiplevariables
fmt.Println("widthis",width,"heightis",height)
}
如果指定了初始值,则type可以省略。下面的程序利用类型推导声明了多个变量:
packagemain
import"fmt"
funcmain(){
varwidth,height=100,50//"int"isdropped
fmt.Println("widthis",width,"heightis",height)
}
可以看到输出结果为:
widthis100heightis50
正如你猜想的那样,如果不指定width
和height
的初值,它们将自动被赋值为0
,也就是说它们将以0
作为初值:
packagemain
import"fmt"
funcmain(){
varwidth,heightint
fmt.Println("widthis",width,"heightis",height)
width=100
height=50
fmt.Println("newwidthis",width,"newheightis",height)
}
将会输出:
widthis0heightis0
newwidthis100newheightis50
有些时候我们需要在一条语句中声明多个不同类型的变量。我们可以使用下面的语法达到此目的:
var(
name1=initialvalue1,
name2=initialvalue2
)
下面的程序就用上面的语法声明了多个不同类型的变量:
packagemain
import"fmt"
funcmain(){
var(
name="naveen"
age=29
heightint
)
fmt.Println("mynameis",name,",ageis",age,"andheightis",height)
}
这里我们声明了一个字符串类型的变量name
,以及两个整型的变量age
和height
。(我们将在下一篇教程中讨论Golang中可用的类型)。上面的程序将会产生如下输出:
mynameisnaveen,ageis29andheightis0
速记声明
Go提供了另一种简洁的声明变量的方式。这种方式称为速记声明(shorthanddeclaratiion)。速记声明使用:=操作符来声明变量。
速记声明的语法为:name:=initialvalue
,例如:
packagemain
import"fmt"
funcmain(){
name,age:="naveen",29//shorthanddeclaration
fmt.Println("mynameis",name,"ageis",age)
}
上面的程序,输出如下:
mynameisnaveenageis29
记声明要求必须给声明的每一个变量都提供初始值。下面的程序将会报错:assignmentcountmismatch:2=1
。这是因为没有给age提供初始值。
packagemain
import"fmt"
funcmain(){
name,age:="naveen"//error
fmt.Println("mynameis",name,"ageis",age)
}
速记声明要求在:=的左边必须至少有一个变量是新声明的。
一个变量不能被赋予与其类型不同的值。下面的程序将报错:cannotuse"naveen"(typestring)astypeintinassignment
。这是因为ag
e被声明为int
类型,但是我们试图将string
类型的值赋给它。
packagemain
funcmain(){
age:=29//ageisint
age="naveen"//errorsincewearetryingtoassignastringtoavariableoftypeint
}
本文内容总结:声明单一变量,声明一个带初值的变量,类型推导,多变量声明,速记声明,
原文链接:https://www.cnblogs.com/liuzhongchao/p/9155582.html