а зачем строки передавать именно таким способом? Есть же стандартный тип :string.
Я попробовал написать простенький парсер на го и дергать его из руби кода.
Github
Как я понял руби FFI передает C строку и её надо конвертировать в го строку
//export grab
func grab(seedUrlsC *C.char) string {
seedUrlsString := C.GoString(seedUrlsC)
seedUrls := strings.Split(seedUrlsString, ",")
....
Руби код:
require 'ffi'
require 'json'
module ParserYandex
extend FFI::Library
ffi_lib 'lib/parserlib.so'
attach_function :grab, [:string], :string
end
def self.getData(urls)
stringUrls = urls.join ','
json_data = ParserYandex.grab(stringUrls)
data = JSON.parse(json_data)
data.each do |item|
puts item
end
end
urls = ["https://auto.yandex.ru/vaz/granta/7684152/complects"]
self.getData(urls)