這是一個簡單的例子:package main//#include <stdio.h>//#include <strings.h>//#include <stdlib.h>/*typedef struct { unsigned char *data; unsigned int data_len;} Result;Result *foo() { Result *r = malloc(sizeof(Result)); r->data = (unsigned char *)malloc(10); r->data_len = 10; memset(r->data, 0, 10); r->data = (unsigned char *)strdup("xxx123"); r->data_len = 6; return r;}*/import "C"import ( "fmt" // "unsafe")func main() { result := C.foo() fmt.Printf("%v, %v, %v\n", result.data, string(*(result.data)), result.data_len)}結(jié)果我得到了這樣的東西0x203970, x, 6指向data,的第一個字符data和大小的指針。但是我怎樣才能得到實際data值,最好是作為 []byte 類型在 go 代碼中使用它?換句話說 - 如何轉(zhuǎn)換unsigned char *為[]byte?
將現(xiàn)有的 C 代碼集成到 Go。將無符號字符指針結(jié)果轉(zhuǎn)換為 []byte
ibeautiful
2021-06-10 18:31:08