Go очень серьезно относится к утверждению типа, поэтому здесь нет места двусмысленности, потому что вы конвертируете из interface{}, общего типа, в определенный тип (включая указатели).

специфический := интерфейс{}.(специфический) — с точки зрения Типа

Какой конкретный тип должен быть утвержден, зависит от того, какой исходный тип был назначен в interface{} в первую очередь.

По-видимому, существует четкое различие между указателем int и int:



Бонус: посмотрите, как удовлетворяются типы в других местах, например: объектно-ориентированный.



Экземплярное правило. Когда вы имеете дело с «интерфейсом — конкретным типом», будьте точны:

  1. чтобы удовлетворить интерфейс {} op.
  2. для преобразования интерфейса {} в конкретный тип (утверждение типа)