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
Identify the wrong embedding
Find the interface definition that tries to embed a struct type.
- 2
Extract an interface
Define an interface with the methods you need from the struct.
- 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 errorBugsly 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