我刚刚开始使用 CGo,我正在尝试将数据发送到 C 库,该库对浮点数/双精度数数组执行统计计算。我现在想弄清楚的是如何将浮点数组或 C.double 的数组发送到具有如下签名的 CGo 函数:
double pop_mean(int numPoints, double a[])
Run Code Online (Sandbox Code Playgroud)
我已经想出了如何在那里输入 C.int,但是我在弄清楚如何发送双打数组时遇到了麻烦。
我还没有看到任何关于这件事的博客文章或 SO 问题,所以我想我会问。
以下是我迄今为止最大的努力。
// Get a basic function to work, while passing in an ARRAY arr := make([]C.double, 0)
arr = append(arr, C.double(10.0))
arr = append(arr, C.double(20.0))
arr = append(arr, C.double(30.0))
var fixedArray [3]C.double = arr[:]
// ptr := C.CBytes(arr)
// defer C.free(unsafe.Pointer(ptr))
coolMean := C.pop_mean(3, &fixedArray)
fmt.Println("pop_mean (10, 20, 30): ", coolMean)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
./main.go:64:6: cannot use arr[:] (type []_Ctype_double) as type [3]_Ctype_double in …Run Code Online (Sandbox Code Playgroud) 我发现了很多通过传入 [][] 字符串写入 CSV 的代码示例。(如下所示):
package main
import (
"os"
"log"
"encoding/csv"
)
var data = [][]string{
{"Row 1", "30"},
{"Row 2", "60"},
{"Row 3", "90"}}
func main() {
file, err := os.Create("tutorials_technology.csv")
if err != nil {
log.Fatal(err)
}
defer file.Close()
w := csv.NewWriter(file)
for _, value := range data {
if err := w.Write(value); err != nil {
log.Fatalln("Error writing record to csv: ", err)
}
}
w.Flush()
}
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到任何代码示例来说明如何使用gota dataframe.WriteCSV() 函数写入 CSV。在 gota dataframe …