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.

Reply via email to