cgo
cgoはGo標準ライブラリで、GoからCのコードを実行できるようになります。
詳細はGoDocをご覧いただきたいですが、
以下のサンプルコードのような形でGoからCコードを実行できます。
cgo_sample.go
package main
// 読み込むCコード片を、'import "C"'の真上にコメントの形で書く必要がある
/*
#include <stdlib.h>
#include <stdio.h>
void hello(char *str)
{
printf("hello, %s\n", str);
}
*/
import "C"
import "unsafe"
func main() {
greetingTo := C.CString("cgo")
// CStringで得たCのstring型は必ず解放しなければならない
defer C.free(unsafe.Pointer(greetingTo))
C.hello(greetingTo)
}
実行
$ go run cgo_sample.go
or
$ go build
$ ./cgo_sample
=> hello, cgo
GoからCのコードを実行することができました。
お手軽ですが、特定の型は自前で解放しなければいけなかったりするので注意が必要です。