我知道这是一个基本问题,但我很好奇为什么下面的代码不起作用。没有用于不声明此变量的用例。
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)
我收到错误
.\run.go:262: undefined: dat
我确信这只是GOLANG的基本功能,我还在学习。
感谢您的支持
答案 0 :(得分:1)
if-else
块有自己的范围。在您的情况下,dat
在其外部不可见。
您可以在var dat []byte
之前声明if (bundled == "true")
来修复它。
文档:https://golang.org/ref/spec#Declarations_and_scope
您可能还想阅读:Declaration scopes in Go