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/
相关文章推荐
- 使用CGO封装Windows API
- golang的cgo支持调用C++的方法
- golang之cgo---类型转换小试牛刀之C结构体和go结构体转换
- golang 结合cgo 操作共享内存,包括虚拟内存mmap版和内存shm版
- go cgo 用法 ,新手容易遇见的第三方的C语言库的 库文件或头文件找不到的情况
- cgo: undefined reference to '*'
- golang之cgo---调用C/C++动态库函数
- cgo
- go语言(使用了cgo与硬件交互),算上空行和注释共200行代码
- cgo: could not determine kind of name for C.*
- golang(cgo)---如何在两个不同的package中使用同样的自定义数据类型?
- Go语言学习之cgo(golang与C语言相互调用)
- 在Go包里添加C代码并且不使用CGO(不需要gcc)
- Go语言练习:go语言与C语言的交互——cgo
- golang1.7 关于CGO的一个小问题:C.free使用.
- cgo调用C++函数实现
- golang新版本对于cgo支持的一个坑
- Linux下GO语言内存共享,CGO实现
- GO中调用C代码(CGO)中的坑
- go--cgo