CGO用于在GO代碼中使用C語言編程,或者說是調(diào)用C代碼封裝的鏈接庫文件中編寫的函數(shù),有些想用的東西GOLANG沒有官方源碼,但是C語言有時(shí),就可以用CGO調(diào)用它,比如喜聞樂見的OpenCV。
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、托里網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開發(fā)、托里網(wǎng)絡(luò)營銷、托里企業(yè)策劃、托里品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供托里建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:chinadenli.net
可以通 CGO 在 golang 在調(diào)用 C 的接口,C++ 的接口可以用 C 包裝一下提供給 golang 調(diào)用。
被調(diào)用的 C 代碼可以直接以源代碼形式提供或者打包靜態(tài)庫或動(dòng)態(tài)庫在編譯時(shí)鏈接。推薦使用靜態(tài)庫的方式,這樣方便代碼隔離,編譯的二進(jìn)制也沒有動(dòng)態(tài)庫依賴方便發(fā)布也符合 golang 的哲學(xué)。
CGO 的具體使用教程本文就不涉及了,這里主要介紹下一些細(xì)節(jié)避免使用 CGO 的時(shí)候踩坑。
參數(shù)傳遞
基本數(shù)值類型
golang 的基本數(shù)值類型內(nèi)存模型和 C 語言一樣,就是連續(xù)的幾個(gè)字節(jié)(1 / 2 / 4 / 8 字節(jié))。
因此傳遞數(shù)值類型時(shí)可以直接將 golang 的基本數(shù)值類型轉(zhuǎn)換成對(duì)應(yīng)的 CGO 類型然后傳遞給 C 函數(shù)調(diào)用,反之亦然:
package main /* #include <stdint.h> static int32_t add(int32_t a, int32_t b) { return a + b; } */ import "C" import "fmt" func main() { var a, b int32 = 1, 2 var c int32 = int32(C.add(C.int32_t(a), C.int32_t(b))) fmt.Println(c) // 3 }
以上就是Golang Cgo是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!
網(wǎng)站名稱:go語言中的Cgo是什么
標(biāo)題來源:http://chinadenli.net/article0/jecsio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、定制網(wǎng)站、小程序開發(fā)、網(wǎng)站營銷、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)