Golang: Пустой интерфейс
В предыдущей статье мы узнали об интерфейсе в Go. В этой статье мы узнаем о пустых интерфейсах.
Тип интерфейса, который не имеет объявлений методов, называется пустым интерфейсом.
Синтаксис:

Пустой интерфейс может содержать значения любого типа.
Пример: я могу сделать пустой интерфейс e_i для хранения строкового значения.
После объявления e_i имеет нулевой тип.
Когда мы инициализируем e_i строковым значением, оно изменяется на строковый тип.

Несмотря на то, что e_i теперь является строковым типом, мы не можем использовать ни одну из строковых функций.

Из-за пустого интерфейса типа e_i может содержать любой тип во время выполнения, поэтому это вызовет ошибку во время компиляции.

Приведенный выше код можно переписать как:

В приведенном выше коде мы утвердили тип, и если это строка, мы продолжаем нашу работу.
Снова мы можем изменить тип e_i

Теперь e_i имеет тип int .
Но опять же, как наилучшая практика, прежде чем выполнять какие-либо операции с этим типом, убедитесь, что он утвержден, а затем продолжите.
Пустые интерфейсы используются кодом, обрабатывающим значения неизвестного типа.