Кратко о пустом интерфейсе в GoВ языке Go есть т. н. «пустой» интерфейс interface{}. Он не содержит в себе никаких методов, описывающих поведение программной сущности.А это значит, что любое значение может быть приведено к типу interface{}. Это несет в себе колоссальные возможности и опасность…Где использовать?Пустой интерфейс используется, когда заранее неизвестен тип данных.1. Например, когда в вызываемую функцию нужно передать аргумент неопределенного типа данных, в ее сигнатуре можно указать, как параметр функции, пустой интерфейс:// OneFunc — функция может принимать значение любого типа, которое затем возможно обработать внутри ее тела функцииfunc OneFunc(arg interface{}) {// …}2. Чтобы создавать универсальные типы данных.Универсальные типы данных могут хранить значения разных типов.Для примера, создадим пустой срез(слайс) типа []interface{}:package main import "fmt" func main() { var slice []interface{} slice = append(slice, 8, "Привет!", 10.0, true) fmt.Printf("Адрес среза(слайса): %p\nЗначения: %+v\nТип: %T\n", slice, slice, slice) }ВАЖНО!Будьте очень осторожны в практике применения пустых интерфейсов - они не дают гарантии типов данных, которые хранятся или передаются внутри них!Для безопасности, лучше используйте типизированные интерфейсы.Статья написана для проекта Go & Rust для красивых и не серьезных.С уважением, Вячеслав "Marpa" Шаров (Marpa3D)