編程基礎知識之語言交互性

因爲Go語言與C語言之間的天生聯繫,Go語言的設計者們天然不會忽略如何重用現有C模塊的這個問題,這個功能直接被命名爲Cgo。Cgo既是語言特性,同時也是一個工具的名稱。
在Go代碼中,能夠按Cgo的特定語法混合編寫C語言代碼,而後Cgo工具能夠將這些混合的C代碼提取並生成對於C功能的調用包裝代碼。開發者基本上能夠徹底忽略這個Go語言和C語言的邊界是如何跨越的。
與Java中的JNI不一樣,Cgo的用法很是簡單,好比代碼清單1-3就能夠實如今Go中調用C語言標準庫的puts函數。
代碼清單1-3 cprint.go
package main /*
#include <stdio.h> */
import "C"
import "unsafe" func main() {
cstr := C.CString("Hello, world")函數

import "unsafe" func main() {
cstr := C.CString("Hello, world")
C.puts(cstr)
C.free(unsafe.Pointer(cstr)) }工具

相關文章
相關標籤/搜索