Go очень серьезно относится к утверждению типа, поэтому здесь нет места двусмысленности, потому что вы конвертируете из interface{}, общего типа, в определенный тип (включая указатели).
специфический := интерфейс{}.(специфический) — с точки зрения Типа
Какой конкретный тип должен быть утвержден, зависит от того, какой исходный тип был назначен в interface{} в первую очередь.
По-видимому, существует четкое различие между указателем int и int:
Бонус: посмотрите, как удовлетворяются типы в других местах, например: объектно-ориентированный.
Экземплярное правило. Когда вы имеете дело с «интерфейсом — конкретным типом», будьте точны:
- чтобы удовлетворить интерфейс {} op.
- для преобразования интерфейса {} в конкретный тип (утверждение типа)