Avatar ·

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

सभी को नमस्ते! मैंने अभी Go सीखना शुरू किया है और C-स्ट्रिंग्स के साथ काम करते समय एक समस्या का सामना किया। मुझे एक बाहरी स्रोत (जैसे syscall या cgo के माध्यम से C-लाइब्रेरी) से डेटा पढ़ना है, जो नल बाइट (`\0`) पर समाप्त होने वाला बाइट ऐरे लौटाता है। Go में स्ट्रिंग्स केवल बाइट slices हैं, लेकिन वे नल-टर्मिनेटेड होने के लिए बाध्य नहीं हैं, और स्ट्रिंग के अंदर नल बाइट को एक सामान्य कैरेक्टर माना जाता है। मेरे पास यह कोड है: ```go package main import "fmt" func main() { // उदाहरण: C-फंक्शन से प्राप्त बाइट ऐरे data := []byte{'H', 'e', 'l', 'l', 'o', 0, 'W', 'o', 'r', 'l', 'd', 0} // सीधा स्ट्रिंग में रूपांतरण str := string(data) fmt.Println(str) // "Hello" और कचरा प्रिंट करेगा? या "Hello\0World"? } ``` समस्या यह है कि अगर मैं सीधे `string(data)` करता हूँ, तो सभी बाइट्स स्ट्रिंग में आ जाते हैं, जिसमें नल बाइट्स और पहले नल के बाद का सब कुछ शामिल है। मुझे केवल पहले नल तक का भाग चाहिए (जैसे C में — स्ट्रिंग `\0` पर समाप्त होती है)। कै