title: nil slices vs non-nil slices vs empty slices in Go language
body: <p>I am a newbie to Go programming. I have read in go programming book that slice consists of three things: a pointer to an array, length and capacity.</p>
  <p>I am getting confused between:</p>
  <ul>
  <li>nil slices (slice has no underlying array to point to, len = 0, cap=0)</li>
  <li>non-nil slices where only len = 0, cap = 0</li>
  <li>empty slices.</li>
  </ul>
  <p>Can anyone please tell whether nil and empty slices are same things?
  If they both are different, then please tell what is the difference between those two? How to test whether a slice is empty or not? Also, what value does the pointer holds in non-nil slices, whose length and capacity are zero?</p>