Go 返回双精度数组的导出函数
在Golang中,如何导出返回双精度数组的函数。以前可能的方式现在似乎返回“运行时错误:cgo结果已转到指针”: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
为了在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)
}