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

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