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 Swig 使用筆記Go筆記
- Java 網路程式設計(TCP程式設計 和 UDP程式設計)Java程式設計TCPUDP
- 程式設計思想 面向切面程式設計程式設計
- 【go網路程式設計】-HTTP程式設計Go程式設計HTTP
- 程式語言設計,程式設計哲學程式設計
- 程式設計小記-程式設計規範程式設計
- 從程式設計到養生程式設計程式設計
- 程式設計模式-表驅動程式設計程式設計設計模式
- 程式設計師何苦為難程式設計師?程式設計師
- 【程式設計素質】程式設計思想總結程式設計
- 程式設計和網路程式設計入門程式設計
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- JAVA網路程式設計(2)TCP程式設計Java程式設計TCP
- 美女程式設計師觀點:程式設計師最重要的非程式設計技巧程式設計師
- 玩轉 PHP 網路程式設計全套之多程式程式設計PHP程式設計
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 程式設計思想之冪等性 | 程式設計之道程式設計
- Windows程式設計系列:圖形程式設計基礎Windows程式設計
- Java 網路程式設計 —— 非阻塞式程式設計Java程式設計
- 程式設計師如何獲取新程式設計技能程式設計師
- 幽默:程式設計師成功完成程式設計的眼睛程式設計師
- Python程式設計:探索有趣的程式碼設計模式Python程式設計設計模式
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- 五種Java程式設計高效程式設計方法 - BablaJava程式設計
- 【網路程式設計】阻塞IO程式設計的坑程式設計
- 無程式碼程式設計程式設計
- [python] 多程式程式設計Python程式設計
- Python多程式程式設計Python程式設計
- windows核心程式設計--程式Windows程式設計
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- python程式設計Python程式設計
- 程式設計心得程式設計
- SOCKET程式設計程式設計
- JUC 程式設計程式設計
- 程式設計路由程式設計路由
- 高效程式設計程式設計
- bat程式設計BAT程式設計