您的位置:首页 > 编程语言 > Go语言

cgo

2013-12-09 17:20 113 查看
package main

/*
#include <stdio.h>
#include <stdlib.h>

char* sayHello(char* name) {
char* buf = (char*) malloc(64);
sprintf(buf,"hello %s\n", name);
return buf;
}
*/
import "C"
import "fmt"
import "unsafe"

func main() {
result := C.sayHello(C.CString("jack")) // 将go string转换为c char*
fmt.Println("result", result, *result)
fmt.Println(C.GoString(result)) // 将c char*转换为go string
C.free(unsafe.Pointer(result))
}


Go有强烈的C背景,除了语法具有继承性外,其设计者以及其设计目标都与C语言有着千丝万缕的联系。在Go与C语言互操作(Interoperability)方面,Go更是提供了强大的支持。尤其是在Go中使用C,你甚至可以直接在Go源文件中编写C代码,这是其他语言所无法望其项背的。

更多 可以参见: http://tonybai.com/tag/cgo/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: