На работе завязалась интересная дискуссия: если в Go вообще всё можно привести к интерфейсу, является ли интерфейс некой базой для любого типа в Go? Как отслеживаются ошибки приведения типов для таких случаев? К примеру возьмем следующий код:
"fmt"
"reflect"
)
func interfaceArg(i interface{}) {
fmt.Println("type:", reflect.TypeOf(i))
}
func main() {
var x float64 = 3.14
interfaceArg(x)
}