小编典典

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

go

我知道这是一个基本问题,但是我很好奇下面的代码为什么不起作用。没有用例不会声明此变量。

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内容。

谢谢你的支持


阅读 322

收藏
2020-07-02

共1个答案

小编典典

if-else块有自己的范围。在您的情况下dat,它们在外部不可见。

您可以var dat []byteif (bundled == "true")修复前声明。

文件:https//golang.org/ref/spec#Declarations_and_scope

您可能还需要阅读:Go中的声明范围

2020-07-02