Maison > développement back-end > Golang > Comment accéder à un tableau C `const char*` depuis Go ?

Comment accéder à un tableau C `const char*` depuis Go ?

Patricia Arquette
Libérer: 2024-11-26 13:40:11
original
357 Les gens l'ont consulté

How to Access a C `const char*` Array from Go?

Accès à un tableau C de type const char * depuis Go

Problème

Un programme C définit un tableau de type const char *, nommé myStringArray, contenant une liste de chaînes. L'objectif est d'accéder à ce tableau à partir d'un programme Go à l'aide de cgo et de convertir chaque entrée du tableau en une chaîne Go.

Discussion

Cependant, le code Go fourni ne parvient pas à accéder correctement au tableau, mais il parcourt les caractères de la première chaîne du array.

Solution

Une meilleure approche consiste d'abord à convertir le tableau C en une tranche Go, ce qui offre un moyen plus pratique et plus sûr d'accéder à ses éléments. Voici comment cela peut être fait :

import "C"
import "fmt"

// Convert the C array into a Go slice of pointers to C (null-terminated) strings.
arraySize := 3
cStrings := (*[1 << 30]*C.char)(unsafe.Pointer(&C.myStringArray))[:arraySize:arraySize]

// Iterate over the slice and convert each C string into a Go string.
for _, cString := range cStrings {
    fmt.Println(C.GoString(cString))
}
Copier après la connexion

Sortie :

NAME_OF_FIRST_THING
NAME_OF_SECOND_THING
NAME_OF_THIRD_THING
Copier après la connexion

Cette solution garantit que chaque élément du tableau est correctement accessible en tant que chaîne Go distincte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal