通过把byte数组,转成unsafe pointer,再转成*C.uchar 比如 /* C代码 #include <stdio.h> void test(unsigned char* b) { printf("fetch: %s\n", b); b[0] = 'b'; b[1] = 'a'; b[2] = 'r'; } */ //Go代码 import "C" import ( "fmt" "reflect" "unsafe" ) func main() { buf := []byte("foo") fmt.Printf("original: %s\n", buf) data := (*reflect.SliceHeader)(unsafe.Pointer(&buf)).Data C.test((*C.uchar)(unsafe.Pointer(data))) fmt.Printf("result: %s\n", buf) }
2,348
社区成员
923
社区内容
加载中
试试用AI创作助手写篇文章吧