Idiomatic way to cast multiple return values in Go
===

What is the idiomatic way to cast multiple return values in Go?

Can you do it in a single line, or do you need to use temporary variables such as I've done in my example below?


    package main
    
    import "fmt"
    
    func oneRet() interface{} {
    	return "Hello"
    }
    
    func twoRet() (interface{}, error) {
    	return "Hejsan", nil
    }
    
    func main() {
    	// With one return value, you can simply do this
    	str1 := oneRet().(string)
    	fmt.Println("String 1: " + str1)
    	
    	// It is not as easy with two return values
    	//str2, err := twoRet().(string) // Not possible
    	// Do I really have to use a temp variable instead?
    	temp, err := twoRet()
    	str2 := temp.(string)
    	fmt.Println("String 2: " + str2 )
    	
    	
    	if err != nil {
    		panic("Not nil? Impossiburu!")
    	}	
    }

By the way, is it called `casting` when it comes to interfaces?

    i := interface.(int)