Я хочу обернуть функцию 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 описывает только обратную ситуацию.