I'm wondering what the correct syntax is for calling functions with multiple return values, one (or more) of which is of type interface{}
.
A function which returns interface{}
can be called like this:
foobar, ok := myfunc().(string)
if ok { fmt.Println(foobar) }
but the following code fails with the error multiple-value foobar() in single-value context
:
func foobar()(interface{}, string) {
return "foo", "bar"
}
func main() {
a, b, ok := foobar().(string)
if ok {
fmt.Printf(a + " " + b + "\n") // This line fails
}
}
So, what is the correct calling convention?
package main
import "fmt"
func foobar() (interface{}, string) {
return "foo", "bar"
}
func main() {
a, b := foobar()
if a, ok := a.(string); ok {
fmt.Printf(a + " " + b + "\n")
}
}
You can only apply a type assertion to a single expression.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With