Created
November 10, 2017 00:22
-
-
Save tallclair/b2e6d2217391cbfeafd919bb2f842b46 to your computer and use it in GitHub Desktop.
Demonstrate named return masking
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import "fmt" | |
/* OUTPUT: | |
[named] defer: foo error | |
[main] named err: foo error | |
[var] defer: <nil> | |
[main] var err: foo error | |
*/ | |
func main() { | |
fmt.Printf("[main] named err: %v\n", namedReturn()) | |
fmt.Printf("[main] var err: %v\n", varErr()) | |
} | |
func namedReturn() (err error) { | |
defer func() { | |
fmt.Printf("[named] defer: %v\n", err) | |
}() | |
{ | |
err := fmt.Errorf("foo error") | |
return err | |
} | |
} | |
func varErr() error { | |
var err error | |
defer func() { | |
fmt.Printf("[var] defer: %v\n", err) | |
}() | |
{ | |
err := fmt.Errorf("foo error") | |
return err | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment