title: Can I reopen a closed channel?
body: <p>I am trying to figure out whether I can reopen a channel after closing it. </p>
  
  <p>Test case:</p>
  
  <ol>
  <li>I have a channel with some things in it  </li>
  <li>I want to range over them therefore I need to close the channel beforehand  </li>
  <li>I want to put more stuff in the channel and iterate through it once more</li>
  </ol>
  
  
  
  <pre><code>go func() {
      queue &lt;- "1"
      queue &lt;- "2"
      close(queue)
  }()
  
  for i := range queue {
      go func(i string) {
          fmt.Println("From queue: ", i)
      }(i)
  }
  
  go func() {
      open(queue)
      queue &lt;- "3"
      queue &lt;- "4"
      close(queue)
  }()
  
  for i := range queue {
      go func(i string) {
          fmt.Println("From queue: ", i)
      }(i)
  }
  </code></pre>
  
  <ul>
  <li>Of course <code>open</code> does not exist. How can I implement something like what I need in Go?</li>
  <li>I don't want to use the Sleep function</li>
  </ul>