Глобальная переменная с пустым идентификатором в Golang [duplicate]

std::string Gesture::getLabeledPointsString(const std::string delimiter) {
  return boost::join(getLabeledPoints(), delimiter);
}

Я не убежден в том, что в этот момент getLabeledPointsString убедится;)

6
задан The user with no hat 3 July 2016 в 06:40
поделиться

1 ответ

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

Если тип *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)
9
ответ дан ThunderCat 15 August 2018 в 18:31
поделиться
  • 1
    Можете ли вы предоставить ссылку на спецификацию? golang.org/ref/spec – The user with no hat 3 July 2016 в 06:45
  • 2
    @Theuserwithnohat это не в спецификации. Это неофициальная конвенция. – Endophage 3 July 2016 в 06:50
  • 3
    @ Karrot Kake теперь я понимаю, как это работает. Это своего рода трюк. Поскольку пустые идентификаторы никоим образом не используются, я думаю, что это не мусор, не так ли? вне темы: (*Doubler)(nil) приятно. Я тоже не знаком с этим. – The user with no hat 3 July 2016 в 06:51
  • 4
    Пустой идентификатор используется, потому что программе не требуется ссылаться на переменную. Непустой идентификатор выдаст столько же мусора, сколько и пустой идентификатор (который не является). – ThunderCat 3 July 2016 в 06:57
Другие вопросы по тегам:

Похожие вопросы: