Golang: Пустой интерфейс
В предыдущей статье мы узнали об интерфейсе в Go. В этой статье мы узнаем о пустых интерфейсах.
Тип интерфейса, который не имеет объявлений методов, называется пустым интерфейсом.
Синтаксис:
![e_i имеет пустой интерфейс<br>](/static/storage/269362037371211682477742095444373261499.png)
Пустой интерфейс может содержать значения любого типа.
Пример: я могу сделать пустой интерфейс e_i для хранения строкового значения.
После объявления e_i имеет нулевой тип.
Когда мы инициализируем e_i строковым значением, оно изменяется на строковый тип.
![Строковое значение в пустой интерфейс<br>](/static/storage/314687260981200263446785681126103067686.png)
Несмотря на то, что e_i теперь является строковым типом, мы не можем использовать ни одну из строковых функций.
![Тип interface{}<br>](/static/storage/118741056984890599452912996891605151267.png)
Из-за пустого интерфейса типа e_i может содержать любой тип во время выполнения, поэтому это вызовет ошибку во время компиляции.
![После утверждения типа нет ошибки<br>](/static/storage/6864565544910629322021143173813455381.png)
Приведенный выше код можно переписать как:
![Более чистый способ ввода assert<br>](/static/storage/96149944974055953378150183819590573775.png)
В приведенном выше коде мы утвердили тип, и если это строка, мы продолжаем нашу работу.
Снова мы можем изменить тип e_i
![Пустой интерфейс может содержать значения любого типа<br>](/static/storage/163562216658525216376539606350783714318.png)
Теперь e_i имеет тип int .
Но опять же, как наилучшая практика, прежде чем выполнять какие-либо операции с этим типом, убедитесь, что он утвержден, а затем продолжите.
Пустые интерфейсы используются кодом, обрабатывающим значения неизвестного типа.