interface{}
- это универсальное поле, в котором может храниться все.Интерфейсы в go определяют набор методов, и любой тип, который реализует эти методы, соответствует интерфейсу.interface{}
не определяет методы, и поэтому по определению каждый отдельный тип соответствует этому интерфейсу и, следовательно, может содержать значение типа interface{}
.
Это на самом деле совсем не похоже на обобщение.Вместо этого это способ ослабить систему типов и сказать «здесь можно передать любое значение».Эквивалентом этой функции в Си является указатель void *
, за исключением того, что в Go вы можете запросить тип удерживаемого значения.