Skip to content

Instantly share code, notes, and snippets.

@tallclair
Created November 10, 2017 00:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tallclair/b2e6d2217391cbfeafd919bb2f842b46 to your computer and use it in GitHub Desktop.
Save tallclair/b2e6d2217391cbfeafd919bb2f842b46 to your computer and use it in GitHub Desktop.
Demonstrate named return masking
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