Я хочу обернуть функцию C, которая принимает char*
, указывающую на (первый элемент) непустой буфер байтов. Я пытаюсь обернуть это в функции Go с помощью CGo, чтобы передать его []byte
, но я не знаю, как сделать преобразование. Упрощенная версия сигнатуры функции C - это
void foo(char const *buf, size_t n);
Я попытался передать указатель на первый byte
в срезе с помощью
C.foo(&b[0], C.size_t(n))
Это не скомпилировано:
cannot use &b[0] (type *byte) as type *_Ctype_char in function argument
Итак, какая здесь правильная процедура? go-wiki описывает только обратную ситуацию.