Go에서 const char *의 C 배열에 액세스
const char Go에서 cgo를 사용합니다. 특히 C 배열의 문자열이 있고 이를 색인화하여 배열 항목을 Go 문자열로 변환하려고 합니다.
잘못된 접근 방식
현재 코드는 포인터 산술을 사용하여 이를 수행하려고 시도합니다.myGoString := C.GoString((*C.char) (unsafe.Pointer(uintptr(unsafe.Pointer(C.myStringArray)) + uintptr(index) * unsafe.Sizeof(C.myStringArray))))
올바른 해결책
C 배열에 올바르게 액세스하려면 더 안전하고 먼저 Go 슬라이스로 변환하는 것이 더 편리합니다.import "unsafe" const arraySize = 3 cStrings := (*[arraySize]*C.char)(unsafe.Pointer(&C.myStringArray))[:arraySize:arraySize] for _, cString := range cStrings { fmt.Println(C.GoString(cString)) }
샘플 출력
이 접근 방식을 사용하면 C에서 전체 문자열을 가져올 수 있습니다. 배열(다음 샘플 출력에 표시됨):위 내용은 Go에서 `const char*` 문자열의 C 배열에 올바르게 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!