cgo的个人总结

1.cgo的看法
go语言是一门比较新的语言,和C类语言的比较的亲和。前几年,其开源项目有点少,虽然go语言有很多优点,但是很多人都是抱着观望的态度去看待go。在没有很多开源项目的支持下,只能有cgo来接入原有羡慕中的一些模块(一般不会去用go语言重写,毕竟成本有点高)。
首先需要了解一些基本的go语言底层知识,就是go语言在进行syscall的时候会将goroutin所在的线程M上其他的G都移到其他的M上。然后进行C底层的系统调用。这样的话如果该syscall阻塞的话不会影响到其他的G。同样的,在使用CGO的时候也是会有类似的现象,在CGO返回前对应的G占用一个M。故可以把CGO中C函数看做在一个线程中执行。
CGO的用法
1、在使用CGO的时候C代码写的部分都要在注释里边,然后最后一行注释的下一行加上impourt “C”

package main

//#include <stdio.h>
import "C"

func main() {
    C.printf("hello world\n")
    return
}

2、C使用go语言中的变量。
go的标准类型转换为C的标准类型有
C.c

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值