Go 返回双精度数组的导出函数

Go 返回双精度数组的导出函数,go,cgo,Go,Cgo,在Golang中,如何导出返回双精度数组的函数。以前可能的方式现在似乎返回“运行时错误:cgo结果已转到指针”: 为了在C中安全地存储指针,指针指向的数据必须在C中分配 //export Init func Init(f string) (C.size_t, *C.double) { size := 10 // allocate the *C.double array p := C.malloc(C.size_t(size) * C.size_t(unsafe.Size

在Golang中,如何导出返回双精度数组的函数。以前可能的方式现在似乎返回“运行时错误:cgo结果已转到指针”:


为了在C中安全地存储指针,指针指向的数据必须在C中分配

//export Init
func Init(f string) (C.size_t, *C.double) {
    size := 10

    // allocate the *C.double array
    p := C.malloc(C.size_t(size) * C.size_t(unsafe.Sizeof(C.double(0))))

    // convert the pointer to a go slice so we can index it
    doubles := (*[1<<30 - 1]C.double)(p)[:size:size]
    doubles[3] = C.double(1.5)

    return C.size_t(size), (*C.double)(p)
}
//导出初始化
func Init(f字符串)(C.size\u t,*C.double){
尺寸:=10
//分配*C.double数组
p:=C.malloc(C.size\u t(size)*C.size\u t(unsafe.Sizeof(C.double(0)))
//将指针转换为go切片,以便为其编制索引

双打:=(*[1谢谢你。很有魅力。
//export Init
func Init(f string) (C.size_t, *C.double) {
    size := 10

    // allocate the *C.double array
    p := C.malloc(C.size_t(size) * C.size_t(unsafe.Sizeof(C.double(0))))

    // convert the pointer to a go slice so we can index it
    doubles := (*[1<<30 - 1]C.double)(p)[:size:size]
    doubles[3] = C.double(1.5)

    return C.size_t(size), (*C.double)(p)
}