CGO程式設計
1)什麼是CGO程式設計?
2)CGO語法
3)相關資料
一、什麼是CGO程式設計?
簡單說就是GO語言程式碼中可以編寫C程式碼和呼叫C程式碼,在一些偏底層業務中,用C來編寫會比較簡單,然後GO中來呼叫
二、CGO語法
1)簡單案例
2)GO與C語言型別轉換
3)GO語言傳值到C語言
(1)簡單案例
package main/* #include <stdio.h> int a = 1; char s[30] = "12345"; int fun1() { printf("hello cgo!n"); } */import "C"import "fmt"func main() { fmt.Println(C.a) fmt.Println(C.s) C.fun1() } 輸出結果:1[49 50 51 52 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] hello cgo!
C程式碼在GO語言中嵌入在內,然後引入C程式碼,必須在緊接的下一行,不能有空行或其他程式碼,否則不能引入
/* C程式碼 */import "C"
然後GO中呼叫C程式碼的話,以C. + 變數名或函式名
(2)GO與C語言型別轉換
GO呼叫列印C變數型別:
package main/* #include <stdio.h> int a = 1; float f = 1.2; double d = 1.3; char c = '1'; char s[30] = "12345"; */import "C"import "fmt"func main() { fmt.Printf("int %Tn", C.a) fmt.Printf("char %Tn", C.c) fmt.Printf("char[30] %Tn", C.s) fmt.Printf("float %Tn", C.f) fmt.Printf("double %Tn", C.d) } 輸出:int main._Ctype_intchar main._Ctype_charchar[30] [30]main._Ctype_charfloat main._Ctype_floatdouble main._Ctype_double
C -> GO
int,float,double,char型別變數可以直接強轉// 轉換 C 字串到 Golang 字串func C.GoString(*C.char) string// 轉換一定長度的 C 字串到 Golang 字串func C.GoStringN(*C.char, C.int) string// 對於C字串陣列變數,沒有辦法直接用C.GoString()和C.GoStringN()直接轉換,可以使用chart*替代字串陣列變數的使用
GO -> C
對於int,float,double,char可以直接強轉賦值char*使用C.CString()
3)GO語言傳值到C語言
package main /*#include <stdio.h>int a = 1;float f = 1.2; double d = 1.3; char c = '1'; char* s = "12345"; int fun1(int a, char c, float f, double d,char *s) { printf("%d %c %f %f %sn", a, c, f, d, s); } */ import "C"func main() { C.fun1(1, 'a', 1.2, 1.5, C.CString("dsadsad")) }
作者:laijh
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4560/viewspace-2819963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用 cgo 生成用於 cgo 的 C 相容的結構體Go結構體
- cgo 型別轉換問題??Go型別
- [golang]如何在windows上使用cgoGolangWindows
- 程式設計思想 面向切面程式設計程式設計
- 《程式設計師程式設計藝術》程式設計師
- 程式設計小記-程式設計規範程式設計
- 從程式設計到養生程式設計程式設計
- 【go網路程式設計】-HTTP程式設計Go程式設計HTTP
- 程式設計模式-表驅動程式設計程式設計設計模式
- 程式設計能力與程式設計年齡程式設計
- 程式設計師程式設計10大原則程式設計師
- 所有程式設計皆為Web程式設計程式設計Web
- 盲人程式設計師的程式設計生涯程式設計師
- 程式設計將死,程式設計師永存程式設計師
- 程式語言設計,程式設計哲學程式設計
- Hermit:一位程式設計師設計的程式設計字型MIT程式設計師
- 程式設計師OR非程式設計師,有些程式設計的事需要知道程式設計師
- 程式設計師何苦為難程式設計師?程式設計師
- 【程式設計素質】程式設計思想總結程式設計
- JAVA網路程式設計(2)TCP程式設計Java程式設計TCP
- 程式設計和網路程式設計入門程式設計
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- IO程式設計和NIO程式設計簡介程式設計
- 程式設計師的“非程式設計師”之路程式設計師
- 盲人程式設計師是如何程式設計的?程式設計師
- 程式設計師程式設計能力層次模型程式設計師模型
- 程式設計師程式設計時喝什麼?程式設計師
- 程式設計師程式設計時喝什麼程式設計師
- 糟糕程式設計師的程式設計風格程式設計師
- 程式設計師何必難為程式設計師程式設計師
- 差異程式設計師-評《程式設計感悟》程式設計師
- 要麼程式設計要麼被程式設計程式設計
- 併發程式設計和並行程式設計程式設計並行行程
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- 美女程式設計師觀點:程式設計師最重要的非程式設計技巧程式設計師
- 玩轉 PHP 網路程式設計全套之多程式程式設計PHP程式設計
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- 程式設計師如何獲取新程式設計技能程式設計師