Avatar ·

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