title: struct String() implemention causes stack overflow with Sprintf "+" flag
body: <p>Golang noob question:  Why can I <em>not</em> use the <code>"%+v"</code> flag for a struct in the String() implementation method?</p>
  
  <p>I have a struct where I want to implement a <code>String()</code> method for pretty print.  I like the answer given <a href="https://stackoverflow.com/a/33252434">here</a>, but I don't like to type, so I'm trying to modify it to return a string using the <code>"%+v"</code> format flag for structs.  from the <a href="https://golang.org/pkg/fmt" rel="nofollow noreferrer">fmt</a> doc:</p>
  
  <blockquote>
    <p>%v    the value in a default format   when printing structs, the plus flag
    (%+v) adds field names</p>
  </blockquote>
  
  <p>This works fine if I simply call it with <code>fmt.Printf("%+v", color)</code>, but if I try to put the <code>+</code> flag in the <code>String()</code> implementation, I get a stack overflow (my first chance to ask a "stack overflow" question on stackoverflow.com ;) ) </p>
  
  <p>I'm sure I'm not understanding a pointer reference here, or there is some recursion.  I doubt this noob found my first Golang bug, so can someone please explain?</p>
  
  <p>see go play demonstration here <a href="https://play.golang.org/p/13_qI8Iwwa" rel="nofollow noreferrer">https://play.golang.org/p/13_qI8Iwwa</a></p>