Maison > développement back-end > Golang > Parlons de la façon d'utiliser l'outil cgo dans Golang

Parlons de la façon d'utiliser l'outil cgo dans Golang

PHPz
Libérer: 2023-04-04 16:48:28
original
1770 Les gens l'ont consulté

Cgo est une fonctionnalité très puissante du langage de programmation Golang, qui permet aux programmeurs d'interagir facilement entre différents langages de programmation. Présentons l'utilisation de base de Cgo.

Qu'est-ce que Cgo ?
Cgo est un outil qui permet aux programmes Golang d'interagir avec le compilateur C. Grâce à Cgo, les programmeurs Golang peuvent mélanger et compiler des codes C et Golang ensemble, de sorte que les programmes Golang puissent utiliser les bibliothèques et fonctions du langage C, et que les programmes en langage C puissent également appeler des fonctions et bibliothèques du langage Golang.

Utilisation de Cgo
Cgo est un outil puissant. L'utilisation de Cgo dans Golang peut grandement améliorer l'évolutivité et la convivialité du programme. Apprenons à utiliser Cgo.

  1. Définir la fonction C
    Avant d'utiliser Cgo, nous devons d'abord définir une fonction C, qui sera appelée par le programme Golang. L'exemple ci-dessous est une fonction C très simple qui renverra la somme de deux nombres.
//file: sum.c
int sum(int a, int b) {
    return a + b;
}
Copier après la connexion
  1. Générer une bibliothèque de liens dynamiques
    Après avoir écrit la fonction C, nous devons également la compiler dans une bibliothèque de liens dynamiques. Ensuite, nous utilisons la commande gcc pour compiler le fichier sum.c dans une bibliothèque de liens dynamiques.
gcc -o libsum.so -shared sum.c
Copier après la connexion

Après une compilation réussie, nous obtiendrons une bibliothèque de liens dynamiques, son nom est libsum.so.

  1. Écriture de fichiers Golang
    Nous avons maintenant préparé la bibliothèque de fonctions C et de liens dynamiques. Ensuite, nous devons écrire un fichier Golang, qui appellera notre fonction C.
package main

/*
#include <stdlib.h>
#include <stdio.h>

int sum(int a, int b);

*/
import "C"

import (
    "fmt"
)

func main() {
    a := C.int(10)
    b := C.int(20)
    output := C.sum(a, b)
    fmt.Println(output)
}
Copier après la connexion

Il est à noter que dans ce fichier Golang, nous utilisons le formulaire de commentaires pour introduire le code C. Après l'instruction d'importation "C", nous pouvons utiliser des types prédéfinis, tels que C.int. La raison pour laquelle C.int se présente ici sous cette forme est qu'il s'agit d'un wrapper pour le type int dans le langage C.

Dans la fonction principale, nous définissons deux variables a et b, qui sont respectivement de type C.int, et leurs valeurs sont respectivement 10 et 20. Ensuite, nous avons appelé la fonction sum et attribué la sortie à la variable de sortie. Enfin, nous avons utilisé l'instruction fmt.Println pour imprimer la valeur de la sortie.

  1. Compiler les fichiers Golang
    La dernière étape consiste à compiler notre programme Golang. Utilisez la commande go build pour compiler notre programme.
go build
Copier après la connexion

Après une compilation réussie, nous pouvons exécuter notre programme. Dans cet exemple, notre programme en imprimera 30.

Résumé
Cgo est un outil très utile pour les programmeurs Golang. Grâce à Cgo, nous pouvons facilement interagir avec différents langages de programmation, élargissant ainsi la fonctionnalité et la flexibilité de nos programmes. J'espère que cet article sera utile à tous ceux qui apprennent Cgo.

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!

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