您的位置:首页 > 编程语言 > Go语言

golang 快捷付值需要注意的地方

2016-03-18 16:51 423 查看
http://bbs.studygolang.com/thread-29-1-1.html
看这段代码的输出是:

package main

import "fmt"

var name string

func main() {

name, err := getString()

if err != nil {

panic(err)

}

fmt.Println("first print:" + name)

printName()

}

func printName() {

fmt.Println("second print:" + name)

}

func getString() (string, error) {

return "studygolang", nil

}

复制代码
可以在这里直接运行查看结果:http://play.golang.org/p/BUWTcEwsBL

如果你的结果和运行结果不一样,这个小知识可以帮助你哦。

1、在函数内的快捷赋值(:=),我们都会认为是创建新变量;然而,当是给多个变量同时赋值时,只需要一个变量未定义即可。比如:

var i int

i, n := 2, 5

复制代码
这样是允许的

然而,这样却是不允许的:

var i int

var n int

i, n := 2, 5

复制代码
2、开篇的例子为什么输出是那样的呢?原来,name是全局变量,在main中,使用快捷赋值时,它同时创建了name和err,这时候的name是main中的局部变量,而非全局变量的name。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: