Golang casting a multiple return value to match named result parameter

casting, go

Solution

There is no way to cast in a multiple return from a function. That doesn't mean you can't shorten your code though. http://play.golang.org/p/bf4D71_rZF If you don't care about the error then just cast the variable in your inline return

Problem

Let's assume I want to define a function with named result parameters, one of which is a `string`. This function internally calls another function, that returns a bytes representation of such string. Is there a way to cast the result without using a temporary variable? ``` func main() { out, _ := bar("Example") fmt.Println(out) } func foo(s string) ([]byte, error) { return []byte(s), nil } func bar(in string) (out string, err error) { // is there a way to assign the result to out // casting the value to string in the same line // istead of using the tmp variable? tmp, err := foo(in) if err != nil { return "", err } return string(tmp), nil } ``` The idea is that, if that's possible, I could potentially shorten the code to ``` func bar(in string) (out string, err error) { // assuming there is a way to cast out to string out, err := foo(in) return } ``` Does it make sense?

Original source