Got it. Thanks to all for the help!

On Monday, March 18, 2013 1:29:42 PM UTC-7, Ian Lance Taylor wrote:
On Mon, Mar 18, 2013 at 10:39 AM, roger peppe wrote:
On 18 March 2013 17:36, Gbr <gbrose...@gmail.com <javascript:>> wrote:
The language specification seems silent on what is returned from a
function. The current implementation appears to just return nil,
making it
difficult to determine the true outcome of the defer'd function.

Is this correct?

Will defer'd functions always return nil? That is, is there any
thought to
allowing defer to return real values in later versions of Go?

Meanwhile, is there any alternative to handling this case other than
isolating panics from opens in separate functions?

func handleWork() {
data, err := doWork()
if err != nil { handleProblem(data); }
if data == nil { return; }

func doWork() ([]byte, error) {

defer func() ([]byte, error) {
if err := recover(); err != nil {
return myDefault, myError // should not return nil, nil
return closeResources() // can validly return nil, nil
you can assign to named return values in a return.

func doWork() (data []byte, err error) {
defer func() {
if rerr := recover(); rerr != nil {
data, err = myDefault, rerr

And, to be clear, the return values of the deferred function, if any,
are ignored.

You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Search Discussions

Discussion Posts


Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 5 of 5 | next ›
Discussion Overview
groupgolang-nuts @
postedMar 18, '13 at 5:36p
activeMar 19, '13 at 6:36a



site design / logo © 2022 Grokbase