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.

Got the actual stack trace?

Paste it into our free AI explainer to get the cause and the fix for your specific case — no signup, nothing to install.

Explain my error

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