Go. Пустой интерфейс
В языке Go есть т. н. «пустой» интерфейс interface{}. Он не содержит в себе никаких методов, описывающих поведение программной сущности.
А это значит, что любое значение может быть приведено к типу interface{}.
Это несет в себе колоссальные возможности и опасность…
Где использовать?
Пустой интерфейс используется, когда заранее неизвестен тип данных.
1. Например, когда в вызываемую функцию нужно передать аргумент неопределенного типа данных, в ее сигнатуре можно указать, как параметр функции, пустой интерфейс:
// OneFunc — функция может принимать значение любого типа, которое затем возможно обработать внутри ее тела функции
func OneFunc(arg interface{}) {
// …
}
2. Чтобы создавать универсальные типы данных.
Универсальные типы данных могут хранить значения разных типов.
Для примера, создадим пустой срез(слайс) типа []interface{}:
ВАЖНО!
Будьте очень осторожны в практике применения пустых интерфейсов - они не дают гарантии типов данных, которые хранятся или передаются внутри них!
Для безопасности, лучше используйте типизированные интерфейсы.
Статья написана для проекта Go & Rust для красивых и не серьезных.
С уважением, Вячеслав "Marpa" Шаров (Marpa3D)