语言的交互性

由于golang和C之间的天生关系,Golang的设计者自然不会忽略如何重用现有的C模块这个问题,这个功能直接被命名为Cgo。Cgo既有语言特性,同时也是一个工具的名称。

在Go代码中,可以按照Cgo的特定语法混合编写C语言代码,然后Cgo公欧可以将这些混合的C代码提取并合并成对于C功能的调用包装代码。开发者基本可以完全忽略golang和C的边界是如何跨越的。

与Java中的JNI不同,Cgo的用法非常简单,示例如下:

package main
/*
#include <stdio.h>
#include <stdlib.h>
*/
import "C"
import "unsafe"

func main(){
    cstr :=C.CString(" hello world ")
    C.puts(cstr)
    C.free(unsafe.Pointer(cstr))
}

results matching ""

    No results matching ""