Avatar ·

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