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

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

报告相同问题?

悬赏问题

  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据