Comment convertir un tableau d'octets terminé par zéro en chaîne en Go ?
Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un problème en travaillant avec des chaînes C. Je dois lire des données d'une source externe (par exemple, d'un syscall ou d'une bibliothèque C via cgo) qui renvoie un tableau d'octets terminé par un octet nul (`\0`). En Go, les chaînes sont simplement des slices d'octets, mais elles ne sont pas nécessairement terminées par zéro, et un octet nul à l'intérieur d'une chaîne est considéré comme un caractère normal.
J'ai ce code :
```go
package main
import "fmt"
func main() {
// Exemple : tableau d'octets obtenu d'une fonction C
data := []byte{'H', 'e', 'l', 'l', 'o', 0, 'W', 'o', 'r', 'l', 'd', 0}
// Conversion simple en chaîne
str := string(data)
fmt.Println(str) // Affichera "Hello" et du bruit ? ou "Hello\0World" ?
}
```
Le problème est que si je fais simplement `string(data)`, tous les octets seront inclus dans la chaîne, y compris les zéros et tout ce qui se trouve après le premier zéro. Moi, j'ai besoin d'obtenir uniquement la partie avant le premier zéro (comme en C — la chaîne se termine par `\0`). Que