Go-Sprache ist eine stark typisierte, statisch typisierte, kompilierte Sprache. Es wird häufig in der Netzwerkprogrammierung, Serverentwicklung, Systemprogrammierung und anderen Bereichen eingesetzt. Die Verwendung von Binärdateien in der Go-Sprache ist eine sehr häufige Aufgabe. In diesem Artikel wird detailliert beschrieben, wie Binärdateien in Go verwendet werden.
1. Was ist eine Binärdatei?
In einem Computer ist eine Binärdatei eine Datei, die der Computer direkt ausführen kann. Es enthält den gesamten Programmcode und die zur Laufzeit benötigten Daten. Binärdateien werden normalerweise durch den Prozess eines Compilers erzeugt, bei dem Quellcode in maschinenausführbaren Code kompiliert wird. In Unix/Linux-Systemen lautet das Suffix von Binärdateien normalerweise „.bin“ oder „.elf“.
In der Go-Sprache gibt es zwei Haupttypen von Binärdateien: ausführbare Dateien und Bibliotheksdateien. Eine ausführbare Datei ist eine Binärdatei, die direkt ausgeführt werden kann. Zu den üblichen ausführbaren Dateien gehören die ausführbare Datei des Go-Programms (Suffix „.exe“ oder kein Suffix), die ausführbare Datei des C-Programms (Suffix „.out“). usw. warten. Eine Bibliotheksdatei ist eine Binärdatei, die Funktionen und Daten enthält, die mit anderen Programmen verknüpft werden können. Das Suffix von Bibliotheksdateien ist normalerweise „.a“ (statische Bibliothek) oder „.so“ (dynamische Bibliothek).
2. Ausführbare Datei generieren
Zuerst müssen wir den Go-Sprachquellcode schreiben , wie zum Beispiel das folgende einfache Programm, das „Hello, world!“ ausgibt:
package main import "fmt" func main() { fmt.Println("Hello, world!") }
Speichern Sie den obigen Code in der Datei „main.go“.
Verwenden Sie den Go-Sprachcompiler, um den Quellcode zu kompilieren und eine ausführbare Datei zu generieren. Führen Sie den folgenden Befehl aus:
go build main.go
Nach der Ausführung wird eine ausführbare Datei mit dem Namen „main“ generiert. Wir können diese Datei im Befehlszeilenfenster ausführen:
./main
Nach dem Ausführen wird „Hello, world!“ an das Terminal ausgegeben.
Wenn wir unser Programm auf verschiedenen Betriebssystemen oder Architekturen ausführen müssen, können wir Cross-Compilation verwenden, um verschiedene zu generieren Ausführbare Dateien auf der Plattform. Beispielsweise können wir auf einem Mac eine Binärdatei kompilieren, die unter Linux ausgeführt werden kann:
GOOS=linux GOARCH=amd64 go build main.go
Nach der Ausführung wird im aktuellen Verzeichnis eine ausführbare Datei mit dem Namen „main“ generiert, die unter Linux ausgeführt werden kann weiterlaufen.
3. Bibliotheksdateien generieren
Zuerst müssen wir die Go-Sprache schreiben Quellcode: Die folgende einfache Bibliotheksdatei definiert beispielsweise eine Funktion „Hinzufügen“, die zwei Ganzzahlen hinzufügt und zurückgibt:
package mylib func Add(a, b int) int { return a + b }
Speichern Sie den obigen Code in der Datei „mylib.go“.
Verwenden Sie den Go-Sprachcompiler, um den Quellcode zu kompilieren und die Bibliotheksdatei zu generieren. Führen Sie den folgenden Befehl aus:
go build -o mylib.a -buildmode=c-archive mylib.go
Nach der Ausführung wird eine statische Bibliotheksdatei mit dem Namen „mylib.a“ im aktuellen Verzeichnis generiert.
Es ist sehr einfach, Bibliotheksdateien in der Go-Sprache zu verwenden. Sie müssen nur die Bibliotheksdatei in die Quellcodedatei importieren, die die Bibliotheksfunktion verwenden muss. Im folgenden Programm importieren wir beispielsweise die Bibliotheksdatei „mylib“ und rufen darin die Add-Funktion auf:
package main import ( "fmt" "mylib" ) func main() { sum := mylib.Add(1, 2) fmt.Println(sum) }
Führen Sie den folgenden Befehl aus, um das Programm zu kompilieren:
go build main.go
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) }
Das obige ist der detaillierte Inhalt vonWie verwende ich Binärdateien in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!