title: Generic Functions in Go
body: <p>I'm in the process of learning <code>Go</code> and the documentation and interactive lessons say that an empty <code>interface</code> can hold any type, as it requires no additionally implemented methods.</p>
  
  <p>So for an example:</p>
  
  <pre><code>func describe(i interface{}) {
      fmt.Printf("Type: %T | Value: %v\n", i, i)
  }
  </code></pre>
  
  <p>...would print out...</p>
  
  <pre><code>"Type: int | Value: 5" // for i := 5
  "Type: string | Value: test" // for i := "test"
  ... etc
  </code></pre>
  
  <p>So I guess my question is if this is <code>Go's</code> way of implementing generic functions or if there is another, more suitable, way of doing them.</p>