I am using cgo
in a project, and I want to export a function for use. Here\'s an example of what I want to achieve:
package csplit
import (
\"C
You're returning a Go slice which is allocated in Go, and is a different structure than a C array. You need to allocate an array in C:
//export Split
func Split(original *C.char, split *C.char) **C.char {
goResult := strings.Split(C.GoString(original), C.GoString(split))
cArray := C.malloc(C.size_t(len(goResult)) * C.size_t(unsafe.Sizeof(uintptr(0))))
// convert the C array to a Go Array so we can index it
a := (*[1<<30 - 1]*C.char)(cArray)
for idx, substring := range goResult {
a[idx] = C.CString(substring)
}
return (**C.char)(cArray)
}