Variables if/else条件定义变量。未定义:dat(变量)
我知道这是一个基本问题,但我很好奇为什么下面的代码不起作用。没有不声明此变量的用例Variables if/else条件定义变量。未定义:dat(变量),variables,go,static,Variables,Go,Static,我知道这是一个基本问题,但我很好奇为什么下面的代码不起作用。没有不声明此变量的用例 if (bundled == "true") { dat, err := Asset("index.html") } else { dat, err := ioutil.ReadFile("./index.html") } if ( err != nil) { os.Exit(0)
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知识
感谢您的支持
,否则
块有自己的作用域。在您的情况下,dat
在其外部不可见
您可以在if(bundled==“true”)
之前声明var dat[]byte
来修复它
文件:
您可能还想阅读:
如果else
块有自己的作用域。在您的情况下,dat
在其外部不可见
您可以在if(bundled==“true”)
之前声明var dat[]byte
来修复它
文件:
您可能还想阅读:
如果else
块有自己的作用域<代码>数据在其外部不可见。您可以在if(bundled==“true”)
之前声明var dat[]byte
来修复它。阅读:如何以我可以完成此请求的方式声明dat。有没有办法创建占位符。我不知道if/else在他们自己的空间里。兴趣声明所需范围内的变量。参考:if-else
块有自己的作用域<代码>数据在其外部不可见。您可以在if(bundled==“true”)
之前声明var dat[]byte
来修复它。阅读:如何以我可以完成此请求的方式声明dat。有没有办法创建占位符。我不知道if/else在他们自己的空间里。兴趣声明所需范围内的变量。供参考:好的,我把它编译了,看看它是否有效。我必须事先声明这个dat:=[]字节{}。建议您更喜欢vardat[]字节
而不是dat:=[]字节{}
。主要原因是前者定义了一个nil片,而后者定义了一个空片。这不仅使检查切片更容易,而且在向切片添加某些内容之前,它可以避免分配切片(在这种情况下,您只需丢弃原始分配)。另外,您需要事先声明err
变量,并完全消除if语句中的短形式赋值,否则您只需屏蔽dat
变量。@Kaedys@dat:=[]字节{}
不分配内存。dat:=[]字节{}
与dat:=make([]字节,0)。它不分配任何空间,但它*会*为片头中的指针分配地址(指向不占用内存的0长度数组)。从技术上讲,这比简单地创建切片头本身要昂贵,而且也没有用,因为无论如何,在第一次调用时仍必须创建一个新数组。它也更丑陋,但那只是我。另外,dat==nil
仅适用于var
版本。最后,golint
专门检查并抱怨这样的空文本。空切片(空文本或make([]类型,0)
,尽管后者是首选)的主要用例是程序是否返回切片(直接或作为更大数据结构的一部分)通过像JSON或Thrift之类的API编码系统。在这种情况下,在大多数编码中,nil
片被编码为null
,而空片被编码为[]
(或在您使用的任何编码中的等效值)。好的,我已经编译了它,看看它是否有效。我必须事先声明这个dat:=[]字节{}。建议您更喜欢vardat[]字节
而不是dat:=[]字节{}
。主要原因是前者定义了一个nil片,而后者定义了一个空片。这不仅使检查切片更容易,而且在向切片添加某些内容之前,它可以避免分配切片(在这种情况下,您只需丢弃原始分配)。另外,您需要事先声明err
变量,并完全消除if语句中的短形式赋值,否则您只需屏蔽dat
变量。@Kaedys@dat:=[]字节{}
不分配内存。dat:=[]字节{}
与dat:=make([]字节,0)。它不分配任何空间,但它*会*为片头中的指针分配地址(指向不占用内存的0长度数组)。从技术上讲,这比简单地创建切片头本身要昂贵,而且也没有用,因为无论如何,在第一次调用时仍必须创建一个新数组。它也更丑陋,但那只是我。另外,dat==nil
仅适用于var
版本。最后,golint
专门检查并抱怨这样的空文本。空切片(空文本或make([]类型,0)
,尽管后者是首选)的主要用例是程序是否返回切片(直接或作为更大数据结构的一部分)通过像JSON或Thrift之类的API编码系统。在这些情况下,在大多数编码中,nil
片被编码为null
,而空片被编码为[]
(或在您使用的任何编码中的等效值)。