




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
「GCTT出品」Go系列教程——3.变量
「GCTT出品」Go系列教程3.变量
这是我们Golang系列教程的第3个教程,探讨Golang里的变量〔Variables〕。
你可以阅读Golang系列教程第2局部:HelloWorld,学习如何配置Golang,并运行helloworld程序。
变量是什么
变量指定了某存储单元〔MemoryLocation〕的名称,该存储单元会存储特定类型的值。在Go中,有多种语法用于声明变量。
声明单个变量
varnametype
是声明单个变量的语法。
packagemain
import"fmt"
funcmain(){
varageint//变量声明
fmt.Println("myageis",age)
}
在线运行程序
语句
varageint
声明了一个int类型的变量,名字为age。我们还没有给该变量赋值。如果变量未被赋值,Go会自动地将其初始化,赋值该变量类型的零值〔ZeroValue〕。本例中age就被赋值为0。如果你运行该程序,你会看到如下输出:
myageis0
变量可以赋值为本类型的任何值。上一程序中的age可以赋值为任何整型值〔IntegerValue〕。
packagemain
import"fmt"
funcmain(){
varageint//变量声明
fmt.Println("myageis",age)
age=29//赋值
fmt.Println("myageis",age)
age=54//赋值
fmt.Println("mynewageis",age)
}
在线运行程序
上面的程序会有如下输出:
myageis0
myageis29
mynewageis54
声明变量并初始化
声明变量的同时可以给定初始值。
varnametype=initialvalue
的语法用于声明变量并初始化。
packagemain
import"fmt"
funcmain(){
varageint=29//声明变量并初始化
fmt.Println("myageis",age)
}
在线运行程序
在上面的程序中,age是具有初始值29的int类型变量。如果你运行上面的程序,你可以看见下面的输出,证实age已经被初始化为29。
myageis29
类型推断〔TypeInference〕
如果变量有初始值,则Go能够自动推断具有初始值的变量的类型。因此,如果变量有初始值,就可以在变量声明中省略
type。
如果变量声明的语法是
varname=initialvalue,Go能够根据初始值自动推断变量的类型。
在下面的例子中,你可以看到在第6行,我们省略了变量
age
的
int
类型,Go依然推断出了它是int类型。
packagemain
import"fmt"
funcmain(){
varage=29//可以推断类型
fmt.Println("myageis",age)
}
在线运行程序
声明多个变量
Go能够通过一条语句声明多个变量。
声明多个变量的语法是
varname1,name2type=initialvalue1,initialvalue2。
packagemain
import"fmt"
funcmain(){
varwidth,heightint=100,50//声明多个变量
fmt.Println("widthis",width,"heightis",heigh)
}
在线运行程序
上述程序将在规范输出打印
widthis100heightis50。
你可能已经想到,如果width和height省略了初始化,它们的初始值将赋值为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)
}
在线运行程序
这里我们声明了
string类型的name、int类型的age和height〔我们将会在下一教程中讨论golang所支持的变量类型〕。运行上面的程序会产生输出
mynameisnaveen,ageis29andheightis0。
简短声明
Go也支持一种声明变量的简洁形式,称为简短声明〔ShortHandDeclaration〕,该声明使用了
:=
操作符。
声明变量的简短语法是
name:=initialvalue。
packagemain
import"fmt"
funcmain(){
name,age:="naveen",29//简短声明
fmt.Println("mynameis",name,"ageis",age)
}
在线运行程序
运行上面的程序,可以看到输出为
mynameisnaveenageis29。
简短声明要求
:=
操作符左边的所有变量都有初始值。下面程序将会抛出错误
cannotassign1valuesto2variables,这是因为
age没有被赋值。
packagemain
import"fmt"
funcmain(){
name,age:="naveen"//error
fmt.Println("mynameis",name,"ageis",age)
}
在线运行程序
简短声明的语法要求
:=
操作符的左边至少有一个变量是尚未声明的。考虑下面的程序:
packagemain
import"fmt"
funcmain(){
a,b:=20,30//声明变量a和b
fmt.Println("ais",a,"bis",b)
b,c:=40,50//b已经声明,但c尚未声明
fmt.Println("bis",b,"cis",c)
b,c=80,90//给已经声明的变量b和c赋新值
fmt.Println("changedbis",b,"cis",c)
}
在线运行程序
在上面程序中的第8行,由于b已经被声明,而c尚未声明,因此运行成功并且输出:
ais20bis30
bis40cis50
changedbis80cis90
但是如果我们运行下面的程序:
packagemain
import"fmt"
funcmain(){
a,b:=20,30//声明a和b
fmt.Println("ais",a,"bis",b)
a,b:=40,50//错误,没有尚未声明的变量
}
在线运行程序
上面运行后会抛出
nonewvariablesonleftsideof:=
的错误,这是因为a和b的变量已经声明过了,:=
的左边并没有尚未声明的变量。
变量也可以在运行时进行赋值。考虑下面的程序:
packagemain
import(
"fmt"
"math"
)
funcmain(){
a,b:=145.8,543.8
c:=math.Min(a,b)
fmt.Println("minimumvalueis",c)
}
在线运行程序
在上面的程序中,c的值是运行过程中计算得到的,即a和b的最小值。上述程序会打印:
minimumvalueis145.8
由于Go是强类型〔StronglyTyped〕语言,因此不允许某一类型的变量赋值为其他类型的值。下面的程序会抛出错误
cannotuse"naveen"(typestring)astypeintinassignment,这是因为age本来声明为int类型,而我们却尝试给它赋字符串类型的值。
packagemain
funcmain(){
age:=29//ag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- r语言笔试题目及答案
- 2025年现代汉语应用能力考试试题及答案
- 2025年房地产经济学与政策考试题及答案
- 2025年公共管理专业考试试题及答案
- 显微鉴别试题及答案
- java异常面试题及答案w
- 儿科自考试题及答案
- 乡村医生考试试题及答案
- 环境政策对可再生能源的影响试题及答案
- 软件设计师考试难题详细解析试题及答案
- 2024年河北建投能源投资股份有限公司招聘笔试参考题库含答案解析
- JB T 6527-2006组合冷库用隔热夹芯板
- 质量管理制度
- 《月光下的中国》赏析
- 刑事案件模拟法庭剧本完整版五篇
- 机械力与心脏再生
- 安全风险评价风险矩阵法LEC法
- 小学心理健康教育-我会举手发言教学设计学情分析教材分析课后反思
- 基于MATLAB仿真的烤箱的温度控制分析
- 22S803 圆形钢筋混凝土蓄水池
- 东南大学高等数学实验报告-2
评论
0/150
提交评论