dongsan6889 2017-02-06 18:20
浏览 80
已采纳

if / else条件定义变量。 未定义:dat(变量)

I know this is a basic question, but I'm curious why the code below does not work. There is no use case where this variable would not be declared.

if (bundled == "true") {
            dat, err := Asset("index.html")
        } else {
            dat, err := ioutil.ReadFile("./index.html")

        }
        if ( err != nil) {
            os.Exit(0)
        }

        t, _ = t.Parse(string(dat))
        p := Person{Scope: ""}
        t.Execute(w, p)

I get the error

.un.go:262: undefined: dat

I'm sure it's just basic GOLANG stuff I'm still learning.

Thanks for your support

  • 写回答

1条回答 默认 最新

  • douyi5822 2017-02-06 18:33
    关注

    if-else blocks have their own scope. In your case datis not visible outside of them.

    You can declare var dat []byte before if (bundled == "true") to fix it.

    Docs: https://golang.org/ref/spec#Declarations_and_scope

    You may also want to read: Declaration scopes in Go

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?