Avatar ·

Go में नल-टर्मिनेटेड बाइट ऐरे (C-स्ट्रिंग) को स्ट्रिंग में कैसे बदलें?

सभी को नमस्ते! मैं Go में नया हूँ और cgo के माध्यम से C कोड के साथ इंटरैक्ट करने वाला प्रोग्राम लिख रहा हूँ। C भाग में, मुझे `*C.char` के रूप में नल बाइट (`\0`) से समाप्त होने वाली स्ट्रिंग मिलती है। मैं इसे सामान्य Go स्ट्रिंग में बदलने की कोशिश कर रहा हूँ, लेकिन समस्याओं का सामना कर रहा हूँ। उदाहरण के लिए, मेरे पास एक फ़ंक्शन है जो `*C.char` लौटाता है: ```go // char* get_name(void); import "C" func getName() string { name := C.get_name() // name को Go स्ट्रिंग में सही तरीके से कैसे बदलें? } ``` मैंने `C.GoString(name)` का उपयोग करने की कोशिश की, लेकिन मुझे यकीन नहीं है कि यह सभी मामलों के लिए सही है। क्या होगा अगर बाइट ऐरे के अंदर नल बाइट्स हों? या अगर स्ट्रिंग बहुत लंबी हो? मेमोरी लीक और पैनिक से कैसे बचें? कृपया मुझे नल-टर्मिनेटेड बाइट ऐरे को Go स्ट्रिंग में बदलने का सही तरीका बताएं, खासकर cgo के साथ काम करते समय। मुझे एक विश्वसनीय और सुरक्षित विधि चाहिए। <<>>

C-स्ट्रिंग को Go स्ट्रिंग में सुरक्षित रूपांतरण

Go में, नल-टर्मिनेटेड C स्ट्रिंग्स के साथ काम करने के लिए,