The empty interface

The empty interface in Go corresponds to a void pointer in C or an Object reference in Java. It specifies zero methods.


A variable of empty interface type can hold values of any type since every type implements at least zero methods.

var a interface{}

a = 24
fmt.Printf("[%v, %T]\n", a, a) // "[24, int]"

a = &Point{1, 2}
fmt.Printf("[%v, %T]\n", a, a) // "[(1,2), *main.Point]"

The fmt.Println function is a chief example from the standard library. It takes any number of arguments of any type.

func Println(a ...interface{}) (n int, err error)

Further reading

Interfaces in a nutshell

Share this page: