日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Python调用golang

發布時間:2023/10/11 综合教程 81 老码农
生活随笔 收集整理的這篇文章主要介紹了 Python调用golang 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有些時候因為效率問題部分代碼會 使用Python調用go的編譯生成動態鏈接庫
go 代碼示例
//add.go
package main

import "C"

//export Add
func Add(a, b int) int {
return a + b
}

//export Addstr
func Addstr(a, b *C.char) *C.char {
merge := C.GoString(a) + C.GoString(b)
return C.CString(merge)
}

// go build -buildmode=c-shared -o add.so add.go
func main() {
}

注意 需要注意的是,這里的注釋//export Addstr //export Add 不能省略,因為在編譯成.so文件的時候,編譯器會尋找這個注釋。同時,為了能正常編譯,我們也必須導入C這個包。
## 特別注意 //和export 中間不能有空格

注意: 只有int可以不需要轉換,直接在go和C直接互相調用
對于不同的類型,需要使用cgo中定義的方法轉換,具體可以參考golang-cgo文檔。
比如string需要用C.char來傳遞,C.GoString(s)可以將C.char類型轉換為string,反之C.CString可以把string類型轉為 *C.char
Python是利用ctypes來跟so模塊進行交互,其中存在著一個代碼的翻譯過程,包括數據類型的翻譯,如果需要傳參獲取接收返回值,需要在golang中將參數按照下表對應,定義成C語言的數據類型。
python,ctypes , c 對應類型參考 python 官方文檔:https://docs.python.org/3.5/library/ctypes.html

把代碼保存為fib.go,然后我們使用如下命令進行編譯:

go build -buildmode=c-shared -o add.so add.go
1
這條命令指定了編譯模式為c-shared,編譯完成以后,當前文件夾下面會生成一個add.so文件。這就是我們需要用 Python 載入的文件了。
注意: 不同平臺下編譯的add.so 不能通用,Windows下可以運行的so文件,linux下就不能運行,需要重新編譯linux的so文件

python 中調用go模塊’
# -*- coding:utf-8 -*-
# @Time : 2020/9/29
# @Author : hllyzms
import ctypes

lib = ctypes.cdll.LoadLibrary('./add.so')

result = lib.Add(2020, 1)
print(result)

add = lib.Addstr #調用go模塊
# 顯式聲明參數和返回的期望類型
add.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
add.restype = ctypes.c_char_p
str1 = add("abc".encode("utf-8"),'efg'.encode("utf-8"))
print(str1,type(str1))

結果:

2021
b'abcefg' <class 'bytes'>
1
2
注意 Addstr 傳入測參數要轉換成byte類型
go中的*C.char 對應 ctypes 中的c_char_p 對應Python中的bytes object or None
Python與Go之間的參數傳遞, 處理非INT型時需要都轉為對應的C類型
ctypes需要顯式地聲明DLL函數的參數和返回期望的數據類型
注意在Python3中字符串bytes和string的區別
Go模塊需要//export 聲明外部可調用
Go處理C的類型是需要顯式轉換
————————————————
版權聲明:本文為CSDN博主「hllyzms」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_37989267/article/details/108869265
-----------------------------------
Python調用golang
https://blog.51cto.com/u_15127511/3456444

總結

以上是生活随笔為你收集整理的Python调用golang的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www..99热| 日韩成人精品视频 | 2021国产在线视频 | 九九视频这里只有精品 | 五月天中文字幕在线 | 无码人妻一区二区三区在线视频 | 尹人av| 另类视频在线观看+1080p | 免费精品久久 | 爱爱免费视频网站 | 色老头网址 | 午夜啪啪网站 | 久久潮 | 亚洲色图18p | 美女视频在线免费观看 | 9·1·黄·色·视·频 | 91视频在| 国产精品久久久久久人 | 日韩在线视屏 | 欧美日韩一区二区综合 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 69成人免费视频 | 日韩三区在线 | 日本一区二区三区中文字幕 | 美女张开腿流出白浆 | 精品国产乱码久久久久久88av | 国产吞精囗交免费视频 | 福利电影一区二区三区 | 欧美射射射 | 国产夫妇交换聚会群4p | 欧美成人aaa片一区国产精品 | 国产精品每日更新 | 免费一级特黄 | 邻居少妇张开双腿让我爽一夜 | 亚洲成人91 | 伊人中文网| 特级毛片www | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 一区二区乱码 | 69sex久久精品国产麻豆 | 超碰在线免费97 | 边啃奶头边躁狠狠躁 | 国产av一区二区三区精品 | 亚洲精品乱码久久久久久蜜桃欧美 | 日韩午夜精品视频 | 欧美一级在线播放 | 毛片毛片毛片毛片毛片毛片毛片毛片 | 另类小说婷婷 | 青青伊人av | 91麻豆国产精品 | 国产一区中文字幕 | 欧美老司机| 最新精品在线 | 国产伦子伦对白视频 | 超碰公开免费 | 超碰按摩| 欧美激情性做爰免费视频 | 新狠狠干 | 欧美一级高清片 | 久久综合成人网 | 日本三级黄色录像 | 日韩精品免费一区二区三区竹菊 | 一级免费在线 | 国产成人+综合亚洲+天堂 | 色妻av | 欧美一区二区三区视频在线 | 丁香花婷婷 | 天天爽一爽 | 久久久久久久国产视频 | 成人在线天堂 | 一本加勒比波多野结衣 | 91精品一区二区三区综合在线爱 | 性欧美又大又长又硬 | 秋霞av在线| 伊人91视频 | 亚洲一区中文字幕在线观看 | xxxwww国产| 久久久高清免费视频 | 国产一级片一区二区 | 诱人的乳峰奶水hd | 亚洲污污视频 | 高跟肉丝丝袜呻吟啪啪网站av | 亚洲国产三级 | 女人十八岁毛片 | 日日碰狠狠添天天爽 | 日本打白嫩屁股视频 | 日韩欧美在线视频播放 | 欧美日韩视频一区二区 | 美女黄色真播 | 女性向av免费网站 | 国产欧美在线看 | 一级特黄色大片 | 免费看三级黄色片 | 绿帽单男 | 国产91精品久久久 | 午夜一区二区三区在线 | 久久成人毛片 | 午夜试看120秒 | av网站大全免费 |