小编Jon*_*ele的帖子

如何将 C.double 数组传递给 Cgo 函数?

我刚刚开始使用 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)

go cgo

5
推荐指数
1
解决办法
4460
查看次数

如何将 gota 数据框写入 csv?

我发现了很多通过传入 [][] 字符串写入 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 …

go gota

1
推荐指数
1
解决办法
1940
查看次数

标签 统计

go ×2

cgo ×1

gota ×1