Golang的short variable declaration

栏目: Go · 发布时间: 7年前

内容简介:Go中,常规声明方式为也有一种短的方式这种方式相当于

Go中,常规声明方式为

var i, j int

也有一种短的方式

i, j := 1, 2

这种方式相当于

var i, j int
i, j = 1, 2

但是短的方式允许重复声明,条件是必须有一个以上重复

i, j := 1, 2
z, j := 3, 4
i, j := 5, 6 // 报错!

我们来看一段代码:

package main

import (
    "fmt"
    "os"
)

var cwd string

func init() {
    cwd, err := os.Getwd()
    if err != nil {
        fmt.Printf("error = %s\n", err)
    }

    fmt.Printf("init: cwd = %s\n", cwd)
}

func main() {
    fmt.Printf("main: cwd = %s\n", cwd)
}

运行结果:

jiajun@debian $ go run fun.go
init: cwd = /home/jiajun/test
main: cwd =

为什么cwd明明已经声明成了全局变量却没有被没改变呢?

https://golang.org/ref/spec#Short_variable_declarations

Unlike regular variable declarations, a short variable declaration may redeclare variables provided they were originally declared earlier in the same block (or the parameter lists if the block is the function body) with the same type, and at least one of the non-blank variables is new.

所以上面的代码想要能正常运行就得:

package main

import (
    "fmt"
    "os"
)

var cwd string

func init() {
    var err error
    cwd, err = os.Getwd()
    if err != nil {
        fmt.Printf("error = %s\n", err)
    }

    fmt.Printf("init: cwd = %s\n", cwd)
}

func main() {
    fmt.Printf("main: cwd = %s\n", cwd)
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JAVA核心技术卷2

JAVA核心技术卷2

Cay S. Horstmann、Gary Cornell / 陈昊鹏、王浩、姚建平 / 机械工业出版社 / 2008-12 / 118.00元

《JAVA核心技术卷2:高级特征》是Java技术权威指南,全面覆盖Java技术的高级主题,包括流与文件、XML、网络、数据库编程、高级Swing、高级 AWT、JavaBean构件、安全、分布式对象、脚本、编译与注解处理等,同时涉及本地化、国际化以及Java SE 6的内容。《JAVA核心技术卷Ⅱ:高级特征》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Jav......一起来看看 《JAVA核心技术卷2》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码