【发布时间】:2014-07-26 17:03:16
【问题描述】:
我正在尝试为 Golang 中的图像大小调整服务器创建一个简单的概念验证。我是 golang 的新手,并且陷入了这个令人沮丧的问题。可能我没有正确理解切片,所以请告诉我我在切片使用方面的错误之处。
我使用request.ParseMultipartForm() 来解析文件和发送到服务器的任何 POST 参数。然后,我需要转换文件列表(这是一个map[string][]*multipart.FileHeader)。我正在使用以下代码来执行此操作。
// convert the FileHeader map to a list of io.Readers
images := make([]io.Reader, len(reqForm.File))
fmt.Println(images)
for _, fileHeaders := range reqForm.File {
fh := fileHeaders[0]
f, err := fh.Open()
fmt.Printf("Converting: %v\n", f)
if err != nil {
writeErrorToResponse(resp, err)
return
}
images = append(images, f)
}
我的问题是,由于某种原因,images 在被make 初始化后,最终将nil 作为它的第一个值。我知道这是因为 fmt.Println(images)(代码 2 行)打印出来:
[<nil>]
我假设 make 会返回一个包含零元素的切片。如果我改为使用make([]io.Reader, 0),它会按我的预期工作。我对这种行为感到困惑,解释一下会很有帮助。
【问题讨论】:
-
什么是 POC?你的意思是概念证明吗?请尽量避免使用模棱两可的首字母缩略词。
标签: go