我想包装一个C函数,它取char*
,指向字节的非空缓冲区(第一个元素).我试图用CGo将其封装在一个Go函数中,这样我就可以将其传递给[]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只描述了相反的情况.