Golang: Careful with Named Return Parameters in Function

package main

import (
	"fmt"
)

func riskyParams() (num int, flag bool) {
    if num == 0 {  // Named parameters have default values in the scope
        flag = true
    }
	return // Beware of such return. You might return something unintended  
}

func main() {
	num, flag := riskyParams()
	fmt.Printf("num=%d flag=%v\n", num, flag)
}

The example highlights unintended side-effects of named return parameters.

Written with StackEdit.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: