2011-08-12 6 views
5

मैं सोच रहा हूं कि एकाधिक रिटर्न मानों के साथ फ़ंक्शंस कॉल करने के लिए सही वाक्यविन्यास क्या है, जिसमें से एक (या अधिक) 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 
    } 
} 

तो, क्या सही बुला सम्मेलन है?

उत्तर

5
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") 
    } 
} 

आप केवल एक अभिव्यक्ति में type assertion लागू कर सकते हैं।

संबंधित मुद्दे