title: Could anybody provide your-own/standard convention of "clone method" that work well for my/our reference?
body: <p>I can't find a "clone" method convention in Golang, but it seems necessary to have one.</p>
  
  <p>I only saw the built-in way <code>*clonedObj = *obj</code>, but it is too low-level, and can't handle (when-necessary) deep copy of case like <code>struct { member *CompositionObj }</code></p>
  
  <p>I doubt whether "func (obj ClassA) Clone() interface{}" prototype will work, because calling <code>obj2 := obj.Clone()</code> will "loose" the method set for ClassA, and need explicit code like <code>obj2.(*ClassA)</code> afterwards.</p>
  
  <p>Please advice a working direction.</p>