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

前端之家收集整理的这篇文章主要介绍了golang 快捷付值需要注意的地方前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
http://bbs.studygolang.com/thread-29-1-1.html



看这段代码输出是:

  1. package main

  2. import "fmt"
  3. var name string
  4. func main() {
  5. name,err := getString()
  6. if err != nil {
  7. panic(err)
  8. }
  9. fmt.Println("first print:" + name)
  10. printName()
  11. }
  12. func printName() {
  13. fmt.Println("second print:" + name)
  14. func getString() (string,error) {
  15. return "studygolang",nil
  16. }
复制代码
可以在这里直接运行查看结果:http://play.golang.org/p/BUWTcEwsBL

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

1、在函数内的快捷赋值(:=),我们都会认为是创建新变量;然而,当是给多个变量同时赋值时,只需要一个变量未定义即可。比如:
  1. var i int
  2. i,n := 2,5
复制代码
这样是允许的
然而,这样却是不允许的:
  1. var n int
  2. 复制代码
2、开篇的例子为什么输出是那样的呢?原来,name是全局变量,在main中,使用快捷赋值时,它同时创建了name和err,这时候的name是main中的局部变量,而非全局变量的name。

猜你在找的Go相关文章