Тип interface{}
может использоваться как очень универсальный тип, который позволяет назначать ему любой другой тип.
Так что, если функция получает interface{}
, вы можете передать ей любое значение.
Это потому, что в Go для типа, удовлетворяющего интерфейсу, он должен просто реализовать все методы, которые объявляет интерфейс.
Поскольку interface{}
является пустым интерфейсом, его удовлетворяет любой тип..
С другой стороны, для типа, удовлетворяющего []interface{}
, это должен быть фактический фрагмент пустых интерфейсов.
Так что если вам нужна универсальная функция, которая может принимать любое значение, простоиспользуйте interface{}
, как показано в вашем примере.
Обратите внимание, что interface{}
позволит вам передавать либо значения, либо ссылки на указатели, так что вы можете передавать указатели или значения нечетко в эту функцию.