Why does Go require deferred function calls to be explicit?

I understand that the only expressions that can go after defer are function calls, e.g.,:

defer mu.lock()
defer func() { ch <- x }()

Why doesn't Go provide syntactic sugar so the latter can be written without an explicit anonymous function, as shown:

defer ch <- x

That would reduce boilerplate and make programs more readable.

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum