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` पर समाप्त होती है)। कै