加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 18:33:02 所属栏目:大数据 来源:网络整理
导读: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(
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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读