Thanks for your response, are you referring to something like this: 
/*
#include <stdio.h>
#include <stdlib.h>

void parse(char* err, int status) {
 // do work 
}
*/




func Ccomputation(address *C.char) {
    
    ptr := uintptr(unsafe.Pointer(C.parse))

   SomeGoComputation(C.GoString(address), func(errString string, code int){ 
     //passing the go callback values to the c callback wrapper
        e := C.CString(errString)
        c :=  C.int(code)
      // then free both e and c via unsafe pointer  
      ptr(e, c)
 })
}






On Monday, December 18, 2017 at 10:03:47 PM UTC-5, rou...@gmail.com wrote:
>
> Hey guys, 
>
> I want to write a c wrapper around a go code that has a callback 
>
> func SomeGoComputation(address string, callback func(string,int)) {
>          _, err = // do some computation with address, maybe go over the 
> network 
>          if (err != nil) {
>          callback(err.Error(), 0)
>       }
>       // I mean you get the gist 
>      callback("",1)
> }
>
> I've having trouble writing the callback signature which in c would be 
> void(*c_callback)(*char, int)
>
> //export Ccomputation
> func Ccomputation(address *C.char, // how to write that callback) {
>    SomeGoComputation(C.GoString(address), func(errString string, code int
> ){ 
>      //passing the go callback values to the c callback wrapper
>         e := C.CString(errString)
>         c :=  C.int(code)
>        c_callback(e, c)
>       // then free both e and c via unsafe pointer  
>  })
> }
>
>
> I look around and some (articles or not related answer from go posts) say 
> to use an interface, so I did try `(C.char*, C.int)interface {}` but I 
> did get an error missing , at line where the callback was declared in the 
> wrapper. 
>
> Any ideas, all advice are welcome thanks .. :)
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to