专栏首页Golang开发golang-101-hacks(7)——简短变量声明

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

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

i := 10

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

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:

package main

i := 10

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

编译体会提示如下错误

syntax error: non-declaration statement outside function body

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

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中声明的。 简短变量声明可以隐藏全局变量声明,它可能不是您想要的,这让您大吃一惊:

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 '函数中没有被访问。使用全局变量,不使用局部变量,正确的解决方法如下:

package main

import "fmt"

var i int

func main() {

    var err bool

    i, err = 2, true

    fmt.Println(i, err)
}

参考: Short variable declarations.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Go基础——Goroutine

    创建时默认的stackd的大小 JDK5以后Java Thread stack默认的是1M Groutine 的stack初始化为2K KSE(kerne...

    羊羽shine
  • ES6——函数

    只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递。

    羊羽shine
  • JavaScrip内置对象

    数组任意地方删除或者添加元素 start 开始 deletedCount 删除个数

    羊羽shine
  • Android中检测当前是否为主线程

    如果在Android中判断某个线程是否是主线程?对于这个问题,你可能说根据线程的名字,当然这个可以解决问题,但是这样是最可靠的么?万一某天Google一下子将线...

    技术小黑屋
  • Ribbon 负载均衡器 LoadBalancer 源码解析

    什么是负载均衡?简单来说一个应用,后台有多个服务来支撑,即利用多台服务器提供单一服务,当某个服务挂了或者负载过高的时候,负载均衡器能够选择其他的服务来处理请求,...

    Java技术大杂烩
  • 代理工具shadowProxy之神出鬼没的切换IP地址

    前言 在渗透测试过程中,往往会遇到特别“小气”的目标,稍微碰一下就封IP。这种情况下,我们很自然的想到通过网上大量的免费代理进行IP隐匿。 那么问题来了,难道拿...

    企鹅号小编
  • conda docker镜像

    之前的python环境,使用ubuntu安装pip来安装python依赖,但是遇到缺少某些库的版本,比如一个项目需要用到faiss,pip只有最新的1.5.3版...

    用户1177380
  • Anaconda手动全面更新

    bdcn
  • Python计算个人所得税

    不知道大家有没有细心观察自己工资条上个人所得税呢?很多人都觉得有专门的个人所得税计算器,不用再去复查,但是有的黑心的公司专门利用这种心理,偶尔增加你的扣税额,为...

    stormwen
  • Octave符号计算必备工具包——Symbolic安装教程

    经过小编上网查询,有三种方式来安装Symbolic包,前两种都是需要先安装Python环境,然后在Python中安装SymPy包,同时还需要对相应的环境变量进行...

    matlab爱好者

扫码关注云+社区

领取腾讯云代金券