Go Appel de la fonction C à partir de Go


Exemple

Cgo permet la création de packages Go qui appellent du code C.
Pour utiliser cgo écrivez un code Go normal qui importe un pseudo-package "C". Le code Go peut alors faire référence à des types tels que C.int ou des fonctions telles que C.Add .
L'importation de "C" est immédiatement précédée d'un commentaire, ce commentaire, appelé préambule, est utilisé comme en-tête lors de la compilation des parties C du package.
Notez qu'il ne doit y avoir aucune ligne vide entre le commentaire cgo et l'instruction import.
Notez que l' import "C" ne peut pas être regroupée avec d'autres importations dans une instruction d'importation "factorisée" entre parenthèses. Vous devez écrire plusieurs instructions d'importation, comme:

import "C"
import "fmt"

Et c'est un bon style d'utiliser le relevé d'importation factorisé, pour d'autres importations, comme:

import "C"
import (
    "fmt"
    "math"
)

Exemple simple utilisant cgo :

package main

//int Add(int a, int b){
//    return a+b;
//}
import "C"
import "fmt"

func main() {
    a := C.int(10)
    b := C.int(20)
    c := C.Add(a, b)
    fmt.Println(c) // 30
}

Ensuite, go build et exécutez le résultat:

30

Pour construire des paquets cgo , utilisez simplement go build ou go install normalement. L' go tool reconnaît l'importation spéciale "C" et utilise automatiquement cgo pour ces fichiers.