【发布时间】:2017-02-06 18:20:33
【问题描述】:
我知道这是一个基本问题,但我很好奇为什么下面的代码不起作用。没有不声明此变量的用例。
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 内容。
感谢您的支持
【问题讨论】:
-
if-else块有自己的范围。dat在它们之外不可见。您可以在if (bundled == "true")之前声明var dat []byte来修复它。阅读:Declaration scopes in Go -
如何以我可以完成此请求的方式声明 dat。有没有办法创建一个占位符。我没有意识到 if/else 在他们自己的空间中。有趣
-
在你想要的范围内声明变量。供参考:golang.org/ref/spec#Declarations_and_scope