前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang-101-hacks(7)——简短变量声明

golang-101-hacks(7)——简短变量声明

作者头像
羊羽shine
发布2019-05-29 16:35:14
5730
发布2019-05-29 16:35:14
举报
文章被收录于专栏:Golang开发Golang开发

注:本文是对golang-101-hacks中文翻译。 在GO语言中简短变量声明是一种非常方便的“声明变量”方式 short variable declaration is a very convenient manner of "declaring variable" in Go:

代码语言:javascript
复制
i := 10

以下是简写方式(注意变量没有标明类型): It is shorthand of following (Please notice there is no type):

代码语言:javascript
复制
var i = 10

Go编译器会根据变量的值来推断变量的类型。这将带来极大方便,但另一方面,也带来了一些陷阱,应该注意: The Go compiler will infer the type according to the value of variable. It is a very handy feature, but on the other side of coin, it also brings some pitfalls which you should pay attention to: (1)简短变量声明格式只能用于函数体内 (1) This format can only be used in functions:

代码语言:javascript
复制
package main

i := 10

func main() {
    fmt.Println(i)
}

编译体会提示如下错误

代码语言:javascript
复制
syntax error: non-declaration statement outside function body

(2)必须声明至少一个新变量:

代码语言:javascript
复制
package main

import "fmt"

func main() {
    var i = 1

    i, err := 2, true

    fmt.Println(i, err)
}

i, err:= 2, false语句中,只有' err '是一个新声明的变量,var实际上是在 vari = 1中声明的。 简短变量声明可以隐藏全局变量声明,它可能不是您想要的,这让您大吃一惊:

代码语言:javascript
复制
package main

import "fmt"

var i = 1

func main() {

    i, err := 2, true

    fmt.Println(i, err)
}

' i, err:= 2, true '实际上声明了一个new local i,这使得global i在' main '函数中没有被访问。使用全局变量,不使用局部变量,正确的解决方法如下:

代码语言:javascript
复制
package main

import "fmt"

var i int

func main() {

    var err bool

    i, err = 2, true

    fmt.Println(i, err)
}

参考: Short variable declarations.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档