missing return Go Origin: Application & API Last updated 4 Nov 2026

Go: ./main.go:18:1: missing return

A function with a return type can reach its end without a return statement on some path.

Exact message you may see missing return./main.go: missing returnfunction ends without a return statement
Seen on: Go

Meaning

Go requires every control-flow path of a non-void function to end in a terminating statement (return, panic, an infinite for {}, or an exhaustive switch with default that returns). An if/else chain without final else or a for with a condition does not count.

Common causes

  • if/else if chain missing a final return
  • Loop with a condition then fall off the end
  • switch without a default case
  • Return only inside an if
  • Function ends with a log call instead of return/panic

⚡ Quick fix

  1. Add a final return (or panic) after the loop or conditional
  2. Add default: to switch statements
  3. Restructure to return early

Detailed fix by platform

Go

  1. go vet ./... highlights unreachable and missing returns

How to diagnose

  1. Paths — Every path returns?
  2. Switch — default present?
  3. Loop — Can it exit?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Application & API. Errors that are often confused with or caused by this one (click to open):

assignment mismatch: 1 variable but f returns 2 values — Go: assignment mismatch: 1 variable but os.Open returns 2 values (Go)assignment mismatch: …cannot assign to struct field m[k].f in map — Go: cannot assign to struct field users["bob"].Age in map (Go)cannot assign to stru…cannot use x as type in assignment/argument — Go: cannot use "5" (untyped string constant) as int value in argument to f (Go)cannot use x as type …declared and not used — Go: declared and not used: x / "fmt" imported and not used (Go)declared and not useddoes not implement interface (missing method) — Go: cannot use &Dog{} (value of type *Dog) as Animal value: *Dog does not implement Animal (missing method Speak) (Go)does not implement in…function main is undeclared in the main package — Go: runtime.main_main·f: function main is undeclared in the main package (Go)function main is unde…imported and not used — Go: ./main.go:5:2: "os" imported and not used (Go)imported and not usedsyntax error: unexpected newline — Go: ./main.go:8:2: syntax error: unexpected newline, expected comma or ) (Go)syntax error: unexpec…missing r…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.