On Fri, Mar 8, 2019 at 5:02 AM whitehexagon via golang-nuts <golang-nuts@googlegroups.com> wrote: > > I'm really liking in Go that I can easily pass bits of code around, > 'closures'? Apologies if I have terminology wrong, since I'm new here. > > For a typical asynchronous bit of code I like to pass in a 'func' for what to > do with the result, and also a 'func' to handle any errors. > > I'm struggling to find a clean way to achieve a 'non-local return' i.e. > return from these closures and return the enclosing function too. > > https://play.golang.org/p/_ANPXKRzibq > > I had a look at the plan9 assembly stuff, and starting to suspect that it's > probably not possible? > > So I'm wondering how readable my attempt is. In Objective-C I would use > named parameters here of 'thenDo' and 'elseDo' to help the readability. And > I'm reluctant to try and duplicate that approach using a struct in Go. But I > suppose it's the dangling return that I least like...
You are correct: Go does not support this. How would a non-local return work from a recursive function closure, or a set of mutually recursive function closures? In the general case it seems equivalent to an exception with a default handler. Which of course you can do in Go using panic and recover, although you have to write it yourself. Ian -- 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+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.