title: A new slice has nil as it's 1st value
body: <p>I'm trying to create a simple proof-of-concept for an image resizing server in Golang. I'm new to golang, and am stuck at this frustrating issue. Maybe I haven't understood slices correctly, so please let me where I am wrong in the usage of slices.</p>
  
  <p>I use <code>request.ParseMultipartForm()</code> to parse the files and any POST params sent to the server. Then, I need to convert the list of files (which are a <code>map[string][]*multipart.FileHeader</code>). I'm using the following code to do so.</p>
  
  <pre><code>    // 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)
      }
  </code></pre>
  
  <p>My problem is, for some reason <code>images</code> ends up having a <code>nil</code> as it's first value after being initialized by <code>make</code>. I know this because the <code>fmt.Println(images)</code> (line of code 2) prints out:</p>
  
  <pre><code>[&lt;nil&gt;]
  </code></pre>
  
  <p>I assumed that the make would return a slice with zero elements. If I do a <code>make([]io.Reader, 0)</code> instead, it works as I expect. I'm confused with this behavior and an explanation would be very helpful.</p>