3 ms·
Golang's defer statement gives some of that power, (and some extra guarantees) but doesn't as far as I know allow return statements. You can however give named
by reificator 8y ago
Golang's defer statement gives some of that power, (and some extra guarantees) but doesn't as far as I know allow return statements.
You can however give named return values and reference those names, and I believe it will work.
I've not seen any other constructs in any language that would come close, and I still maintain `goto fail` is a reasonable construct.
- mjevans 8y agoDeferred statements (in go) are really useful for delaying the runtime of blocks of code to the end of a context, but leaving them in the logical context where you're setting up a resource. I'm actually not sure offhand how multiple deferred statements are handled. I could envision that the specification might make no explicit guarantee about the runtime order or it might create and pop off of a stack (at least in behavior).
- deleted 8y ago[deleted]
- sago 8y agoThank you. For clarity, here would be the GP example: Foo foo = acquireFoo() defer releaseFoo(foo) if !isValid(foo) { return FAIL } moreWork(foo) return SUCCESS That is impressively clear. I don't use go, myself. I agree, I am quite comfortable using goto in C/C++ in this context. Though it may be better in C++ to use RAII in this specific example.