Maison >développement back-end >Golang >Comment utiliser les binaires dans Go ?

Comment utiliser les binaires dans Go ?

WBOY
WBOYoriginal
2023-05-11 15:51:362778parcourir

#🎜🎜Le langage #Go est un langage compilé fortement typé, typé statiquement. Il est largement utilisé dans la programmation réseau, le développement de serveurs, la programmation système et d'autres domaines. L'utilisation de fichiers binaires en langage Go est une tâche très courante. Cet article détaille comment utiliser les fichiers binaires en Go.

1. Qu'est-ce qu'un fichier binaire ?

Dans un ordinateur, un fichier binaire est un fichier que la machine peut exécuter directement. Il contient tout le code du programme et les données nécessaires au moment de l'exécution. Les binaires sont généralement produits par le processus d'un compilateur consistant à compiler le code source en code exécutable par machine. Dans les systèmes Unix/Linux, le suffixe des fichiers binaires est généralement « .bin » ou « .elf ».

Il existe deux principaux types de fichiers binaires impliqués dans le langage Go : les fichiers exécutables et les fichiers de bibliothèque. Un fichier exécutable est un fichier binaire pouvant être directement exécuté. Les fichiers exécutables courants incluent le fichier exécutable du programme Go (suffixe ".exe" ou pas de suffixe), le fichier exécutable du programme C (suffixe ".out"), etc. attendez. Un fichier bibliothèque est un fichier binaire contenant des fonctions et des données pouvant être liées à d'autres programmes. Le suffixe des fichiers de bibliothèque est généralement « .a » (bibliothèque statique) ou « .so » (bibliothèque dynamique).

2. Générer un fichier exécutable

    Écrire le code source
Tout d'abord, nous devons écrire le code source du langage Go , comme le programme simple suivant, qui génère "Hello, world!" :

package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
}

Enregistrez le code ci-dessus dans le fichier "main.go".

    Compiler le fichier exécutable
Utilisez le compilateur du langage Go pour compiler le code source et générer un fichier exécutable. Exécutez la commande suivante :

go build main.go

Après exécution, un fichier exécutable nommé "main" sera généré. Nous pouvons exécuter ce fichier dans la fenêtre de ligne de commande :

./main

Après l'exécution, "Hello, world!" sera affiché sur le terminal.

    Cross-compilation
Si nous devons exécuter notre programme sur différents systèmes d'exploitation ou architectures, nous pouvons utiliser la compilation croisée pour générer différents Fichiers exécutables sur la plateforme. Par exemple, on peut compiler un fichier binaire sur Mac pouvant fonctionner sous Linux :

GOOS=linux GOARCH=amd64 go build main.go

Après l'exécution, un fichier exécutable nommé "main" sera généré dans le répertoire courant, qui pourra être exécuté sous Linux continuer à courir.

3. Générer des fichiers de bibliothèque

    Écrire le code source
Tout d'abord, nous devons écrire le langage Go code source, Par exemple, le fichier de bibliothèque simple suivant définit une fonction Add, qui ajoute deux entiers et renvoie :

package mylib

func Add(a, b int) int {
    return a + b
}

Enregistrez le code ci-dessus dans le fichier "mylib.go".

    Compiler le fichier de bibliothèque
Utilisez le compilateur du langage Go pour compiler le code source et générer le fichier de bibliothèque. Exécutez la commande suivante :

go build -o mylib.a -buildmode=c-archive mylib.go

Après exécution, un fichier de bibliothèque statique nommé "mylib.a" sera généré dans le répertoire courant.

    Utiliser les fichiers de bibliothèque
Il est très simple d'utiliser les fichiers de bibliothèque en langage Go. Il vous suffit d'importer le fichier de bibliothèque dans le fichier de code source qui doit utiliser la fonction de bibliothèque. Par exemple, dans le programme suivant, nous importons le fichier de bibliothèque « mylib » et y appelons la fonction Add :

package main

import (
    "fmt"
    "mylib"
)

func main() {
    sum := mylib.Add(1, 2)
    fmt.Println(sum)
}

Exécutons la commande suivante pour compiler le programme :

go build main.go
#🎜🎜 # Après l'exécution, "3" sera affiché sur le terminal.

4. Lecture de fichiers binaires

Le langage Go fournit des API puissantes pour lire des fichiers binaires, telles que la fonction os.Open, la fonction io.ReadFull, etc. Ces API nous permettent de lire les données de fichiers binaires et de les convertir en variables en langage Go.

Ce qui suit est un exemple, qui ouvre un fichier binaire nommé "test.bin" et y lit un entier :

package main

import (
    "encoding/binary"
    "fmt"
    "os"
)

func main() {
    // 打开二进制文件
    file, err := os.Open("test.bin")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()

    // 读取一个int32类型的整数
    var num int32
    err = binary.Read(file, binary.LittleEndian, &num)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Num is", num)
}

Exécutez le code ci-dessus, il lira un entier à partir d'un fichier binaire nommé "test.bin" et imprimez-le sur le terminal.

5. Résumé

Utiliser des fichiers binaires est l'une des tâches de base du langage Go. Dans cet article, nous avons expliqué comment générer des exécutables et des bibliothèques dans Go, et comment utiliser les bibliothèques. En parallèle, nous avons également appris à lire les données des fichiers binaires. Ces compétences sont toutes nécessaires pour rédiger des applications vraiment utiles. Nous pouvons étendre et personnaliser davantage ces fonctionnalités grâce à des concepts avancés du langage Go tels que les adresses et les tuyaux. Par conséquent, il est très utile de maîtriser les compétences nécessaires pour travailler avec des binaires en langage Go.

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!

Déclaration:
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