美文网首页
golng 中的 cgo

golng 中的 cgo

作者: 追风骚年 | 来源:发表于2021-06-23 18:24 被阅读0次

今天体验了一下 golang 的 cgo 部分,发现 golang 确实太强,调用 c 语言部分直接像是原生操作,go 自己倒变成了一个黏胶语言了,如果我有很多比较底层的 c 库,完全可以用 go 来进行连接。

可以把 go 的特性带给 c 程序员,把 c 的性能和基础 lib 又送给 go 程序员。

做了一个小实验

package main

/*
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

static char* cat(char* str1, char* str2) {
    static char buf[256];
    strcpy(buf, str1);
    strcat(buf, str2);

    return buf;
}
*/
import "C"

import (
    "fmt"
    "unsafe"
)

func main() {
    str1, str2 := "hello", " world"
    // golang string -> c string
    cstr1, cstr2 := C.CString(str1), C.CString(str2)
    defer C.free(unsafe.Pointer(cstr1)) // must call
    defer C.free(unsafe.Pointer(cstr2))
    cstr3 := C.cat(cstr1, cstr2)
    // c string -> golang string
    str3 := C.GoString(cstr3)
    fmt.Println(str3) // "hello world"
}

free 函数是 c 的标准库里面的,cat 是顶部注释部分实现的一个函数,在 goland 中显示和操作这部分 c 代码还是很方便的清晰的。

相关文章

  • golng 中的 cgo

    今天体验了一下 golang 的 cgo 部分,发现 golang 确实太强,调用 c 语言部分直接像是原生操作,...

  • CGO编程

    1)什么是CGO编程?2)CGO语法3)相关资料 一、什么是CGO编程?简单说就是GO语言代码中可以编写C代码和调...

  • Go: build constraints exclude al

    适用场景: 项目采用CGO编程 解决方案: 设置环境变量中的CGO_ENABLED 支持C...

  • CGO 初步认知和基本数据类型转换

    CGO 是什么? CGO 是 GO 语言里面的一个特性,CGO 属于 GOLANG 的高级用法,主要是通过使用 G...

  • CGO使用

    参考文章: http://golang.org/cmd/cgo is the primary cgo docume...

  • golang win10交叉编译

    写了一个bat文件 set CGO_ENABLED=0 关闭CGO

  • cgo

    golang与C有着千丝万缕的联系,go代码中可以调用C代码由于项目需要,新使用的golang语言需要调用C语言写...

  • cgo

    三种方式 在头部嵌入c代码 头部引用.h文件,实际调用动态库,需要指定路径(当前项目使用这种形式) 直接引用文件,...

  • cgo

    cgo cgo是用来在Go语言中调用C语言的工具 Go语言调用C语言 简单C语言函数 在Go语言中需要通过impo...

  • cgo

    转载一篇CGO的文章 Go 与 C 的桥梁:cgo 入门,剖析与实践[https://zhuanlan.zhihu...

网友评论

      本文标题:golng 中的 cgo

      本文链接:https://www.haomeiwen.com/subject/eaobyltx.html