《Go语言编程》第五章完整示例问题

第五章的示例 正是我想做的一个东西,所以我会慢慢将该示例丰富。而且该示例由浅入深,层层递进,写得很不错,特别适合学习。
还没有全部完成,就已经遇到了几个问题。希望可以解答。

  1. 在没有使用html模版之前,html相关的代码如果不添加<html></html>的标签,是不会解析html的。但是同样的代码不包含<html></html>标签,单独写在1.html文件里面用浏览器打开又是可以的,是因为go的html函数解析必需要html标签吗?
  2. 在listHandler方法里面,_,fileInfo := range fileInfoArr 获取到了文件的相关信息,但是使用imgid := fileInfo.Name 出现了一个问题,该如何使用。 method fileInfo.Name is not an expression, must be called
  3. 另外几个小问题都是印刷问题在viewHandler里面的imageId和imagePath 都没有定义 改成:=就可以了。
  4. 还有一个问题,因为这里省略了缩略图(不是本章的重点),而想实现该功能,自己在网上找一了个resize.go https://github.com/nfnt/resize 不知道这个怎么样,实际操作处理缩略图的速度很慢。还没有仔细研究,有没有比较成熟的代码和建议。

继上次提出的几个问题后:

  1. 在模版缓存这里开始,定义了一个templates,这个是全局的一个变量,定义在函数体之外,是不能使用:=的短格式,可能是copy的原因导致的,需要使用var定义。var templates = map[string]*template.Template{} 和var templates = make(map[string]*template.Template) 这两个的定义都是可以的 我想问的是他们有区别吗?
  2. 再有个问题是 templatesp[tmpl]=t 这里并没有tmpl这个变量 我想是截取代码时候造成的,但并没有测试代码,tmpl应该是upload 或者list,所以对templateName进行了split操作。
  3. 使用了check函数后,代码相应的变化,但有些地方忘了添加check有些地方err:= 不再需要:号 因为没有if所以没有了局部变量。
  4. safeHandler函数里面http.Error( w,err.Error(),http.StatusInternalServerError ) err要么改要么其它地方改 没有统一
  5. 在动静分离的时候定义了一个常量ListDir=0x001,这个十六进制的数与flags进行位运算没有太明白原理,书中因为简略的描述,没有太明白,能麻烦详细解释下吗?
  6. 在查看图片的时候 会打印 2012/10/26 17:54:14 http: StatusNotModified response with header "Content-Type" defined 是因为这个设置报出来的吗? w.Header().Set("Content-Type","image") ,另外image写得是否正确?
  7. 最后,整个示例的层层递进关系非常好,非常感谢。但示例最后好像因为截取copy等关系并没有严格的测试,还有一些格式等小问题,我将代码放置在了我的blog上面,有时间会整理所有章节的问题和示例代码进行打包发布。关于这章的http://www.ohlinux.com/archives/825/ 

这章的示例还在完善,做个小相册玩玩。

查看回复