title: Go Programming: Generating Combinations
body: <p><strong>This is homework</strong></p>
  
  <p>I'm working on a project, and a very small (very small, once I get this working...it's basically the pre-req for the rest of the project) part of it is to generate some combinations using a Go routine.</p>
  
  <p>The code I have is thusly:</p>
  
  <pre><code>package bruteforce
  
  // GenerateCombinations is an iterator function.  Given an alphabet and a
  // length, it will generate every possible combination of the letters in
  // alphabet of the specified length.
  //
  // It is meant to be consumed by using the range clause:
  //
  //  for combination := range GenerateCombinations(alphabet, length) {
  //      process(combination)
  //  }
  //
  func GenerateCombinations(alphabet string, length int) &lt;-chan string {
  
  GenerateCombinations(alphabet, length):
  if length == 0:
      yield ""
  else:
      for i := range alphabet{
          for j := range GenerateCombinations(alphabet, length-1){
              i + j
          }
      }
  
      return nil
  }
  </code></pre>
  
  <p>I seriously do not get this at all. As you can see, there is some instructor-provided pseudo code there, but the implementation of it is frying my brain.</p>
  
  <p>Example I/O would be something like this:</p>
  
  <p>If the alphabet is {0, 1} and the password was length 2, then it would need to generate {0, 1, 00, 01, 10, 11}.</p>
  
  <p>I appreciate all suggestions, but please recognize that the term "beginner" doesn't begin to describe my competency with go. Saying things like "use channels" doesn't help me at all. Explanations are my friend... something that I haven't had a lot of luck getting out of my professor aside from "use channels."</p>