见下面这段代码最后2、3行的注释,能够获得结构体指针的第一个元素,第二个元素如何获取?
package main
import (
"fmt"
)
/*
#include <dlfcn.h>
#include <stdio.h>
#include<malloc.h>
typedef struct test {
double a;
double b;
}test;
test* Parse() {
test *a;
a = (test *)malloc(sizeof(test)*2);
a[0].a=12121.1;
a[1].a=12122.1;
a[0].b=12123.1;
a[1].b=12124.1;
return a;
}
*/
import "C";
func main() {
var result *C.struct_test ;
result = C.Parse();
fmt.Printf("%f\n", result.a); //可以正常打印出12121.1
fmt.Printf("%f\n", result[1].a); //不能通过编译
}
```golang
tmpPtr := uintptr(unsafe.Pointer(result))
sizeOf := unsafe.Sizeof(*result)
tmpPtr += sizeOf
result = (*C.struct_test)(unsafe.Pointer(tmpPtr))
fmt.Printf("%f\n", result.a);
```
最后一行改为这样,可以输出你想要的
#1