Python 中调用 Go 代码
2022-10-28
#python
#go
2022-10-28
#python
#go
前言
Python 可以通过 ctypes 模块调用 C 语言实现的函数,调用的方式很简单:
CDLL
的实例{CDLL_instance}.{function_name}({function_parameters})
格式调用 c 语言对应的函数步骤一
步骤二
使用下述命令,创建 so 文件
步骤三&四
调用 C 的函数
调用 GO 代码
从上面的 C 语言的调用过程,不难发现,最重要的是生成的
.so
文件,如果我们可以将 go 编辑成.so
文件就可以得到 Python 调用 Go 的目的了。CGO
Go 有个标准库 CGO 可以用来创建调用 C 代码的 Go 包,当然反过来也可以。
例子
需要注意的是:
编译动态库
使用下面的命令进行编译
注意📢 :
go build -ldflags "-s -w" -o main.dll -buildmode=c-shared s1.go
使用 Python 语言调用
最后
Python 和 GO 之间的参数传递需要经过 C 的疏忽类型转换,所以还需要了解 python 中 ctypes 数据类型和 python 数据类型以及 C 的数据类型对应关系
三种数据类型使用场景:
对应关系如下:
也就是说,如果写如下的 go 代码:
也就意味着,我们的 Python 调用代码中参数类型也需要对应起来:
参考文章