• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言学习笔记1 变量,类型以及赋值 - Mr.Victor

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.变量

1.1 声明变量

使用var关键字可以创建一个指定类型的变量:

var i int = 0
var i = 0
var i int

以上三个表达式均是合法的,第三个表达式会将i初始化为int类型的零值,0;如果i是bool类型,则为false;i是float64类型,则为0.0;i为string类型,则为"";i为interface类型,则为nil;i为引用类型,则为nil;如果i是struct,则是将struct中所有的字段初始化为对应类型的零值。

可以在同一条语句中声明多个变量:

var i, j, k int                 // int, int, int
var b, f, s = true, 2.3, "four" // bool, float64, string

 

包内可见的变量在main函数开始执行之前初始化,本地变量在函数执行到对应的声明语句时初始化。

变量也可以通过函数的返回值来初始化:

var f, err = os.Open(name) // os.Open returns a file and an error  

1.2 短声明

在函数内部,有一种短声明的方式,形式是name := expression,这里,变量的类型是由编译器自动确定的。

anim := gif.GIF{LoopCount: nframes}
freq := rand.Float64() * 3.0
t := 0.0

因为这种形式非常简洁,因此在函数内部(本地变量)大量使用。如果需要为本地变量显式的指定类型,或者先声明一个变量后面再赋值,那么应该使用var

1 i := 100                  // an int
2 var boiling float64 = 100 // a float64
3 var names []string
4 var err error
5 var p Point

就像var声明一样,短声明也可以并行初始化

i, j := 0, 1  

要谨记的是,:=是一个声明,=是一个赋值,因此在需要赋值的场所不能使用 :=

 

1 var i int  
2 i := 10//panic : no new variables on left side of :=  

 

可以利用并行赋值的特性来进行值交换:

1 i, j = j, i // swap values of i and j  

有一点需要注意的:短声明左边的变量未必都是新声明的!

1 in, err := os.Open(path1) //新声明两个变量:in, err  
2 //...  
3 out, err := os.Create(path2)   
4 /*因为err已经声明过,因此这里只新声明一个变量out。 
5 虽然这里使用:=,但是err是在上个语句声明的,这里仅仅是赋值*/  

而且,短声明的左边变量必须有一个是新的,若都是之前声明过的,会报编译错误:

1 f, err := os.Open(infile)  
2 // ...  
3 f, err := os.Create(outfile) // compile error: no new variables 

正确的写法是这样的:

1 f, err := os.Open(infile)  
2 // ...  
3 f, err = os.Create(outfile) // compile ok  

1.3 指针

 

  1. f, err := os.Open(infile)  
  2. // ...  
  3. f, err = os.Create(outfile) // compile ok  

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go学习笔记(一)安装Go语言环境发布时间:2022-07-10
下一篇:
GO语言入门 - For循环遍历发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap