Cómo convertir un array de bytes terminado en nulo a una cadena en Go
¡Hola a todos! Acabo de empezar a aprender Go y me encontré con un problema al trabajar con cadenas C. Necesito leer datos de una fuente externa (por ejemplo, de syscall o una biblioteca C a través de cgo) que devuelve un array de bytes terminado en un byte nulo (`\0`). En Go, las cadenas son simplemente slices de bytes, pero no están obligadas a ser terminadas en nulo, y el byte nulo dentro de una cadena se considera un carácter normal.
Tengo este código:
```go
package main
import "fmt"
func main() {
// Ejemplo: array de bytes obtenido de una función C
data := []byte{'H', 'e', 'l', 'l', 'o', 0, 'W', 'o', 'r', 'l', 'd', 0}
// Conversión simple a cadena
str := string(data)
fmt.Println(str) // ¿Imprimirá "Hello" y basura? ¿o "Hello\0World"?
}
```
El problema es que si simplemente hago `string(data)`, todos los bytes se incluirán en la cadena, incluidos los nulos y todo lo que está después del primer nulo. Necesito obtener solo la parte hasta el primer nulo (como en C: la cadena termina en `\0`). ¿Cómo