Спецификации: Какова цель пустого идентификатора в присвоении переменной?

Я нашел это объявление переменной var _ PropertyLoadSaver = (*Doubler)(nil) и мне интересно, в чем его цель. Кажется, он ничего не инициализирует, и поскольку он использует пустой идентификатор, я думаю, вы не можете получить к нему доступ.

Это утверждение времени компиляции, что *Doubler Тип *Doubler удовлетворяет интерфейсу PropertyLoadSaver .

Если тип *Doubler Doubler не удовлетворяет интерфейсу, то компиляция завершится с ошибкой, аналогичной:

 prog.go:21: cannot use (*Doubler)(nil) (type *Doubler) as type PropertyLoadSaver in assignment: *Doubler does not implement PropertyLoadSaver (missing Save method) 

Вот как это работает. Код var _ PropertyLoadSaver объявляет неназванную переменную типа PropertyLoadSaver . Выражение (*Doubler)(nil) оценивается значением типа *Doubler . *Doubler может быть назначен только переменной типа ProperytLoadSaver если *Doubler реализует интерфейс PropertyLoadSaver .

Пустой идентификатор _ используется, поскольку переменная не нуждается в ссылке в другом месте в пакете. Тот же результат может быть достигнут с помощью непустого идентификатора:

 var assertStarDoublerIsPropertyLoadSaver PropertyLoadSaver = (*Doubler)(nil) 
  • Горутин не выполняется, если включено время.
  • как устанавливать и получать поля в структурах Golang?
  • есть ли способ создать экземпляр структуры из строки?
  • Ошибка «Неизвестная escape-последовательность» в Go
  • В частности, проверьте ошибку тайм-аута
  • Преобразование структуры Go в JSON
  • Приемник значений против приемника указателя в Голанге?
  • Невозможно преобразовать строку в интерфейс {}
  • Go - Строки даты / времени, которые не являются стандартными форматами
  • Безопасно ли читать указатель на функцию одновременно без блокировки?
  • Имеются ли стандартные переменные Err?
  • Interesting Posts

    Можно ли вернуться к Windows 8 после установки Windows 10 (не предварительный просмотр)?

    Как удалить почтовый ящик Outlook без разрешения?

    Фрагменты Android. Сохранение AsyncTask во время поворота экрана или изменения конфигурации

    Как настроить код Visual Studio для компиляции кода на C ++?

    Что делает InputStream.available () в Java?

    Как установить несколько попыток повтора в RabbitMQ?

    Как сравнить два java-объекта

    Могут ли новые версии JRE запускать Java-программы, скомпилированные со старыми версиями JDK?

    Фильтрация углового 1.2 ng-repeat с помощью «track by» с помощью булевого свойства

    Spring Security 3.2 Поддержка CSRF для многопрофильных запросов

    Соображения производительности для keySet () и entrySet () карты

    Сбой в реализации IEnumerable

    Как создать caffe.deploy из train.prototxt

    Emerge жалуется на заблокированные пакеты: что мне делать?

    Существуют ли платформы, где указатели на разные типы имеют разные размеры?

    Давайте будем гением компьютера.