Add 'content/posts/go-named-return-values.md'

This commit is contained in:
Marcus Noble 2020-10-05 13:44:28 +00:00
parent e7bcf3521b
commit 6f6fc081d3

View File

@ -0,0 +1,36 @@
---
title: "Named returns in Go functions"
date: 2020-10-05T15:50
draft: false
tags:
- golang
images:
- /images/go-named-return-values.gif
---
While debugging some issues I was having with the AWS Golang SDK I discovered it was possible to name your function return values (pointers) and then set them within your function body without needing to explicitly return them at the end.
E.g.
```go
package main
import "fmt"
var greeting = "Hello, world"
func main() {
fmt.Println(*test())
}
func test() (returnVal *string) {
returnVal = &greeting
return
}
```
Note the single `return` at the end of the function.
I'm not really sure if this is a useful feature, feels more like it'd make code harder to read and could lead to some pretty nasty unintended mistakes when someone unfamilure with the code comes to make changes. Interesting either way.
I'd be interested if anyone has any examples of where this kind of thing is beneficial.