Zugriff auf C-Array von const char * von Go aus
Sie versuchen, auf ein C-Array von const char von Go mit cgo. Konkret haben Sie ein C-Array von Strings und möchten darin einen Index erstellen und den Array-Eintrag in einen Go-String konvertieren.
Der falsche Ansatz
Ihr aktueller Code versucht dies mit Zeigerarithmetik:myGoString := C.GoString((*C.char) (unsafe.Pointer(uintptr(unsafe.Pointer(C.myStringArray)) + uintptr(index) * unsafe.Sizeof(C.myStringArray))))
Die richtige Lösung
Der korrekte Zugriff auf das C-Array ist sicherer und sicherer bequemer, es zuerst in ein Go-Slice umzuwandeln:import "unsafe" const arraySize = 3 cStrings := (*[arraySize]*C.char)(unsafe.Pointer(&C.myStringArray))[:arraySize:arraySize] for _, cString := range cStrings { fmt.Println(C.GoString(cString)) }
Beispielausgabe
Dieser Ansatz stellt sicher, dass Sie den gesamten String aus dem C-Array erhalten, wie im gezeigt folgende Beispielausgabe:Das obige ist der detaillierte Inhalt vonWie greife ich von Go aus korrekt auf ein C-Array von „const char*'-Strings zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!