title: Empty interface{} in function type
body: <p>An object of any type can be assigned to an empty interface. For example, we have the following function  </p>
  
  <pre><code>func Println(i interface{} ) {
    fmt.Println(i)
  }
  </code></pre>
  
  <p>We can call it by  </p>
  
  <pre><code>Println(3)
  Println(1.5)
  Println("Hello")
  </code></pre>
  
  <p>But I can't achieve the same thing for function type  </p>
  
  <pre><code>func Map(fn func( interface{} )) {  
    ......  
  }  
  </code></pre>
  
  <p>I cannot call this with<br>
  <code>Map( func( i int) {......} )</code><br>
  because the type <code>func(int)</code> is different from the type <code>func( interface{} )</code>.</p>
  
  <p>But when I define <code>func( interface{} )</code>, I really mean any type of the input parameters. How can I achieve this in Go?</p>