Это на самом деле называется утверждением типа в go, а не приведением (приведением является преобразование времени компиляции между определенным совместимым типом, т. Е. Int -> int32).
Исходя из опубликованной вами ошибки, у вас просто естьмаленькая ошибка в вашем коде.Базовым типом x
является *faceTri
(указатель на структуру faceTri), поэтому утверждение типа должно быть x.(*faceTri)
РЕДАКТИРОВАТЬ:
Несколько вещей, чтобы уточнить и перейтивне вашего вопросаУтверждение типа в go не является приведением, например: interface_with_underlying_type_int.(int64)
будет паниковать, даже если int
можно привести к int64
Также вы можете проверить утверждение типа, используя запятую-okидиома
not_interface, ok := some_interface.(some_type)
ok
- это логическое значение, указывающее, было ли преобразование успешным, вместо того, чтобы вызывать панику во время выполнения.