Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Golang Cgo

Was ist Golang Cgo

(*-*)浩
(*-*)浩Original
2019-12-03 09:20:034289Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was bedeutet Golang-Kappe?Nächster Artikel:Was bedeutet Golang-Kappe?