分配的值,不在if语句中使用

Dal*_*ale -1 go

我写了一个我在游乐场看到的问题的例子:https: //play.golang.org/p/rPCqAC56Ff

这很明显,但是我在if语句之外声明一个变量,在if中设置变量然后在if之外使用.

问题很简单,为什么这不起作用?

package main

import (
    "fmt"
    "os"
)

func main() {
    var foo string
    if true {
        foo = "foo"
    } else {
        foo, found := os.LookupEnv("GOPATH")
        if !found {
            fmt.Printf("who cares.\n")
        }
    }
    println(foo)
}
Run Code Online (Sandbox Code Playgroud)

Jua*_*doy 5

你正在创建一个新的变量fooif :=

foo, found := os.LookupEnv("GOPATH")
Run Code Online (Sandbox Code Playgroud)

检查和范围规则.

正确的代码:

package main

import (
    "fmt"
    "os"
)

func main() {
    var foo string
    var found bool
    if true {
        foo = "foo"
    } else {
        foo, found = os.LookupEnv("GOPATH")
        if !found {
            fmt.Printf("who cares.\n")
        }
    }
    println(foo)
}
Run Code Online (Sandbox Code Playgroud)