3

簡単な例を次に示します。

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)
}

その結果、私はこのようなものを持っています

0x203970, x, 6

へのポインタdata、の最初の文字、dataおよびサイズ。dataしかし、できればgoコードで使用する[]バイト型として、実際の値を取得するにはどうすればよいですか?
言い換えれば - に変換する方法unsigned char *[]byte

4

1 に答える 1