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

golang变量作用域问题

发布时间:2020-12-16 19:01:03 所属栏目:大数据 来源:网络整理
导读: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 =============(空行
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()

(编辑:李大同)

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

    推荐文章
      热点阅读