Мне интересно, каков правильный синтаксис для вызова функций с несколькими возвращаемыми значениями, одно (или более) из которых имеет тип interface{}
.
Функция, которая возвращает interface{}
, может быть вызвана так:
foobar, ok := myfunc().(string)
if ok { fmt.Println(foobar) }
, но следующий код завершается ошибкой 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
}
}
Итак, каково правильное соглашение о вызовах?