January
29th,
2015
Golang is all good and sunshine .. untill you need a library which is only available in C / C++
Here is a few note for Golang <-> C binding :
Calling C code from Golang
//callme.c
#include <stdio.h>
void callme(){
printf("Called from C");
}
//main.go
package main
//extern void callme()
import "C"
func CallC(){
C.callme()
}
//Called from C
Calling Go code from C
//callme.c
#include <stdio.h>
#include <_cgo_export.h>
void callme(){
GoCall();
}
//main.go
package main
//extern void callme()
import "C"
import "fmt"
//export GoCall
func GoCall(){
fmt.Println("Called from Go")
}
func CallC(){
C.callme()
}
//Called from Go
and of course there is some part where you need to take care of, not everything can be exported to C