Два способа:
Compile-time проверка (рекомендуемый):
var _ MyInterface = (*MyStruct)(nil)
var _ MyInterface = MyStruct{} // если методы на value receiver
Если структура не реализует интерфейс — ошибка компиляции.
Runtime проверка через type assertion:
var x interface{} = MyStruct{}
if v, ok := x.(MyInterface); ok {
v.DoSomething()
}
Или через reflect:
typ := reflect.TypeOf((*MyInterface)(nil)).Elem()
reflect.TypeOf(MyStruct{}).Implements(typ)
Compile-time проверка предпочтительнее — ловит ошибки раньше и не имеет runtime-оверхеда.