Avatar ·

Wie konvertiert man ein nullterminiertes Byte-Array (C-String) in einen String in Go?

Hallo zusammen! Ich bin neu in Go und schreibe ein Programm, das über cgo mit C-Code interagiert. Im C-Teil erhalte ich einen nullterminierten String (`\0`) als `*C.char`. Ich versuche, ihn in einen normalen Go-String zu konvertieren, habe aber Probleme.\n\nZum Beispiel habe ich eine Funktion, die `*C.char` zurückgibt:\n\n```go\n// char* get_name(void);\nimport "C"\n\nfunc getName() string {\n name := C.get_name()\n // Wie konvertiere ich name korrekt in einen Go-String?\n}\n```\n\nIch habe `C.GoString(name)` ausprobiert, bin mir aber nicht sicher, ob das in allen Fällen korrekt ist. Was ist, wenn das Byte-Array interne Nullbytes enthält? Oder wenn der String sehr lang ist? Wie vermeide ich Speicherlecks und Panics?\n\nBitte geben Sie mir den richtigen Weg, um ein nullterminiertes Byte-Array in einen Go-String zu konvertieren.