Heim >Backend-Entwicklung >Golang >Was ist Golang Cgo
CGO bietet einen Mechanismus für den gegenseitigen Aufruf von Golang und C-Sprache. Einige Bibliotheken von Drittanbietern verfügen möglicherweise nur über C/C++-Implementierungen, und die Implementierung vollständig in reinem Golang kann ein riesiges Projekt sein. (Empfohlenes Lernen: go)
kann die C++-Schnittstelle in Golang über CGO aufrufen und Golang zum Aufrufen zur Verfügung stellen.
Der aufgerufene C-Code kann direkt als Quellcode bereitgestellt oder als statische Bibliothek oder dynamische Bibliothek gepackt werden, um zur Kompilierungszeit verknüpft zu werden. Es wird empfohlen, statische Bibliotheken zu verwenden, was die Codeisolierung erleichtert. Die kompilierte Binärdatei weist keine dynamischen Bibliotheksabhängigkeiten auf und ist auch für die Veröffentlichung geeignet.
In diesem Artikel werden nicht die spezifischen Tutorials zur Verwendung von CGO behandelt. Hier stellen wir hauptsächlich einige Details vor, um Fallstricke bei der Verwendung von CGO zu vermeiden.
Parameterübergabe
Grundlegender numerischer Typ
Golangs grundlegendes numerisches Speichermodell ist das gleiche wie die C-Sprache kontinuierlich Ein paar Bytes (1 / 2 / 4 / 8 Bytes).
Wenn Sie also einen numerischen Typ übergeben, können Sie den grundlegenden numerischen Typ von Golang direkt in den entsprechenden CGO-Typ konvertieren und ihn dann an den C-Funktionsaufruf übergeben und umgekehrt:
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 }
Das obige ist der detaillierte Inhalt vonWas ist Golang Cgo. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!