Why This Happens
In Go, you can only embed exported types from other packages. If the interface or struct type starts with a lowercase letter, it is unexported and cannot be embedded from outside its package.
The Problem
// package auth
type validator interface {
Validate() error
}
// package main
type MyAuth struct {
auth.validator // cannot embed unexported type
}The Fix
// package auth
type Validator interface {
Validate() error
}
// package main
type MyAuth struct {
auth.Validator
}Step-by-Step Fix
- 1
Identify the unexported type
Check if the embedded type starts with a lowercase letter.
- 2
Export the type
Capitalize the first letter of the type name in the defining package.
- 3
Update all references
Update all references to the type to use the new capitalized name.
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