5
Tôi tự hỏi cú pháp chính xác là gì khi gọi hàm với nhiều giá trị trả về, một (hoặc nhiều) trong số đó là loại interface{}
.Nhiều kiểu trả về với giao diện {} và xác nhận kiểu (trong Go)
Một chức năng mà trả interface{}
có thể được gọi như thế này:
foobar, ok := myfunc().(string)
if ok { fmt.Println(foobar) }
nhưng đoạn mã sau thất bại với lỗi 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
}
}
Vì vậy, quy ước gọi chính xác là gì?