मैं फ़ंक्शन fn() से कई मानों को वापस करने के लिए एक फ़ंक्शन चाहता हूं() जो एकाधिक मान स्वीकार करता है। ऐसा लगता है कि wantx() द्वारा स्वीकार किए गए मानों की संख्या वापसी मानों की संख्या से मेल खाती है। अगर मैं fn की वापसी मान चाहते हैं() तर्क 2 और want3 के 3() के रूप में कार्य करने के लिए, तोत्रुटि - एकल-मान संदर्भ में एकाधिक-मान fn()
r:= want2(fn(5)) // seems to work fine
हालांकि, उदाहरण के लिए, fn() 2 मूल्यों, और want2() स्वीकार करता है 2 मान देता है मुझे एक त्रुटि मिलती है:
r:= want3(1, fn(5)) // error: multiple-value fn() in single-value context
वांछित 2() एक बहु-मान संदर्भ कैसे चाहता है जबकि 3() नहीं है?
मैं काम करने के लिए 3() काम करने के लिए कॉल कैसे प्राप्त करूं?
package sandbox
import "testing"
func want3(fac int, i int, ok bool) int {
if ok {
return i * fac * 2
}
return i * fac * 3
}
func want2(i int, ok bool) int {
if ok {
return i * 2
}
return i * 3
}
func fn(i int) (int, bool) {
return i, true
}
func TestCall(t *testing.T) {
// error: multiple-value fn() in single-value context
// r := want3(1, fn(5))
r := want2(fn(5)) // works fine
if r != 10 {
t.Errorf("Call!")
}
}
वापसी मान 'ए, बी भंडारण afaiu:
यहाँ पूरा कार्यक्रम है = fn (5); want3 (1, ए, बी); 'बी में अंतर्निहित प्रकार के मूल्यांकन के लिए आवश्यक है, बी। – ABri