Ich möchte die Funktion aus einer anderen Datei in go lang aufrufen. Kann jemand helfen?
test1.go
package main
func main() {
demo()
}
test2.go
package main
import "fmt"
func main() {
}
func demo() {
fmt.Println("HI")
}
Wie Aufruf demo
in test2
aus test1
?
go fmt
? Wie im Terminal oder was? Wie zeigt es, dass er sich um irgendetwas kümmert?Antworten:
Sie können nicht mehr als eine
main
in Ihrem Paket haben.Im Allgemeinen können Sie nicht mehr als eine Funktion mit einem bestimmten Namen in einem Paket haben.
Entfernen Sie das
main
Intest2.go
und kompilieren Sie die Anwendung. Diedemo
Funktion ist sichtbar vontest1.go
.quelle
main
in test2.go erstellen und ausführen, konnte test1.go jedoch nicht mitgo run test1.go
still ausführen . Warum ?go run test1.go test2.go
Go Lang erstellt / führt standardmäßig nur die angegebene Datei aus. Um alle Dateien zu verknüpfen, müssen Sie während der Ausführung den Namen aller Dateien angeben.
Führen Sie einen der beiden folgenden Befehle aus:
Sie sollten etwas Ähnliches tun, wenn Sie sie erstellen möchten.
quelle
Ich habe das Gleiche gesucht. Um Ihre Frage " Wie rufe ich Demo in Test2 von Test1 auf? " Zu beantworten, habe ich Folgendes getan. Führen Sie diesen Code mit dem
go run test1.go
Befehl aus. Ändern Sie den current_folder auf den Ordner , wo test1.go ist.test1.go
lib \ test2.go
Legen Sie die Datei test2.go im Unterordner ab
lib
quelle
package lib; expected main
Wenn Sie nur ausführen
go run test1.go
und diese Datei einen Verweis auf eine Funktion in einer anderen Datei innerhalb desselben Pakets enthält, tritt ein Fehler auf, da Sie Go nicht angewiesen haben, das gesamte Paket auszuführen, sondern nur diese eine Datei auszuführen.Sie können go to run als ganzes Paket festlegen, indem Sie die Dateien als Paket in dem auf verschiedene Arten kommandierten Lauf gruppieren. Hier einige Beispiele (wenn sich Ihr Terminal im Verzeichnis Ihres Pakets befindet):
go run ./
ODER
go run test1.go test2.go
ODER
go run *.go
Mit dem Befehl build können Sie dasselbe Verhalten erwarten. Nach dem Ausführen wird die erstellte ausführbare Datei als gruppiertes Paket ausgeführt, in dem die Dateien über die Funktionen des jeweils anderen Bescheid wissen. Beispiel:
go build ./
ODER
go build test1.go test2.go
ODER
go build *.go
Wenn Sie anschließend einfach die ausführbare Datei über die Befehlszeile aufrufen, erhalten Sie eine ähnliche Ausgabe wie mit dem Befehl run, wenn Sie alle Dateien zusammen als Ganzes ausgeführt haben. Ex:
./test1
Oder wie auch immer Ihr ausführbarer Dateiname beim Erstellen aufgerufen wird.
quelle