Cannot Embed Non-Interface Type in Interface

cannot embed non-interface type MyStruct in interface

Quick Answer

Only interfaces can be embedded in other interfaces. If you want to compose struct types, embed them in a struct instead.

Why This Happens

Go interfaces can only embed other interfaces, not concrete types. If you need to combine behaviors from a struct and an interface, use a struct with both an embedded struct and an embedded interface.

The Problem

type MyStruct struct {
    Name string
}

type MyInterface interface {
    MyStruct // cannot embed non-interface type
    DoWork()
}

The Fix

type Namer interface {
    GetName() string
}

type MyInterface interface {
    Namer
    DoWork()
}

Step-by-Step Fix

  1. 1

    Identify the wrong embedding

    Find the interface definition that tries to embed a struct type.

  2. 2

    Extract an interface

    Define an interface with the methods you need from the struct.

  3. 3

    Embed the interface

    Embed the new interface into the original interface definition.

Bugsly catches this automatically

Bugsly's AI analyzes this error pattern in real-time, explains what went wrong in plain English, and suggests the exact fix — before your users even report it.

Try Bugsly free