Maison > développement back-end > Golang > le corps du texte

Qu'est-ce que Golang Cgo

(*-*)浩
Libérer: 2019-12-03 09:20:03
original
4283 Les gens l'ont consulté

Qu'est-ce que Golang Cgo

CGO fournit un mécanisme permettant au golang et au langage C de s'appeler. Certaines bibliothèques tierces peuvent n'avoir que des implémentations C/C++, et les implémenter entièrement en Golang pur peut être un projet énorme. C'est là que CGO s'avère utile.               (Apprentissage recommandé : go)

peut appeler l'interface C en Golang via CGO L'interface C++ peut être empaquetée en C et fournie à Golang pour l'appel.

Le code C appelé peut être fourni directement sous forme de code source ou conditionné sous forme de bibliothèque statique ou de bibliothèque dynamique à lier au moment de la compilation. Il est recommandé d'utiliser des bibliothèques statiques, ce qui facilite l'isolation du code. Le binaire compilé n'a pas de dépendances de bibliothèque dynamiques et est pratique pour la publication. Il est également conforme à la philosophie de Golang.

Cet article ne couvrira pas les tutoriels spécifiques sur la façon d'utiliser CGO. Ici, nous introduisons principalement quelques détails pour éviter les pièges lors de l'utilisation de CGO.

Passage de paramètres

Type numérique de base

Le modèle de mémoire de type numérique de base de Golang est le même que le langage C, qui est continu Plusieurs octets (1/2/4/8 octets).

Ainsi, lorsque vous passez un type numérique, vous pouvez directement convertir le type numérique de base de Golang en type CGO correspondant, puis le transmettre à l'appel de fonction C, et vice versa :

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
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal