द्वारा पास किया गया है, मैं एक http अनुरोध करने के लिए एक फ़ंक्शन को कॉल कर रहा हूं, संदर्भ पैरामीटर द्वारा दो पास फ़ंक्शन के लिए उपयोग किया जाता है। मैं [] बाइट वी इंटरफ़ेस को पास करता हूं। मैं चाहता हूं कि फ़ंक्शन v इंटरफ़ेस संदर्भ मान को अपडेट करे। प्रतिक्रिया शरीर एक स्ट्रिंग है, मैं स्ट्रिंग मान को वी इंटरफ़ेस में पास करना चाहता हूं। हालांकि, कई तरीकों की कोशिश की लेकिन सफलता नहीं।गोलांग संदर्भ संदर्भ मान
यहां कोड है, आप देख सकते हैं कि byts
v.(*[]byte)
के रूप में v
को प्रतिक्रिया निकाय के स्ट्रिंग मान के साथ अद्यतन करने के लिए घोषित किया गया है। लेकिन यह काम नहीं करता है। v
हमेशा nil
है। कृपया v
को स्ट्रिंग मान के साथ अपडेट किया जा सकता है।
func (s *BackendConfiguration) Do(req *http.Request, v interface{}) error {
res, err := s.HTTPClient.Do(req)
defer res.Body.Close()
resBody, err := ioutil.ReadAll(res.Body)
if v != nil {
byts, ok := v.(*[]byte)
if len(resBody) > 0 {
byts = append(byts, resBody...)
return nil
}
}
}
return nil
}
'क्यों वापस नहीं (इंटरफ़ेस {}, अरे)'? इस तरह आप – serejja
को जोड़ने के बाद 'रिटर्न बाइट्स, शून्य' का उपयोग कर सकते हैं, मैं सिर्फ यह इंगित करना चाहता हूं कि यह अभी भी मूल्य से गुजरता है ... हालांकि मूल्य की प्रतिलिपि बनाई गई है, सूचक नहीं है .. यह क्या इंगित करता है ... # nitpick –
कृपया हमें कोड दिखाएं कि आप इसे 'Do()' विधि कैसे कहते हैं। कृपया 'ठीक' चर की जांच करें। लेकिन सबसे अधिक संभावना है कि आप 'v 'प्रकार पास करते हैं ** ** ** ** प्रकार के प्रकार ** नहीं है! – icza