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