golang变量作用域问题

rufidmx · · 2168 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

func f()(string,error){
    return "test scope of variable",nil
}

func main() {
    var name string
    if name,err := f();nil ==err{
        println(name)
    }
    println(name)
    fmt.Println("Hello, 世界")
}

上面的例子输出:

test scope of variable

=============(空行)
Hello, 世界


期望是:
test scope of variable
test scope of variable
Hello, 世界


原因分析:
golang一旦遇到:=这个符号,如果在不同一个作用域中,就会新定义个变量,如果在同一个作用域中,情况如下例所示:只定义没有定义过的变量:

package main

import "fmt"

func f()(str string){
    ok,str := f2()
    if ok{
        return 
    }
    return "f()"
}

func f2()(b bool,str string){
    return true,"f2()"
}

func main() {
    str := f()
    
    fmt.Println(str)
}

输出:f2()




















有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:rufidmx

查看原文:golang变量作用域问题

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2168 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传