Je veux appeler une fonction à partir d'un autre fichier dans go lang, quelqu'un peut-il m'aider?
test1.go
package main
func main() {
demo()
}
test2.go
package main
import "fmt"
func main() {
}
func demo() {
fmt.Println("HI")
}
Comment appeler demo
à test2
partir test1
?
go fmt
? Comme dans le terminal ou quoi? Comment cela montre-t-il qu'il se soucie de quoi que ce soit?Réponses:
Vous ne pouvez pas en avoir plus d'un
main
dans votre colis.Plus généralement, vous ne pouvez pas avoir plus d'une fonction avec un nom donné dans un package.
Supprimez le
main
intest2.go
et compilez l'application. Lademo
fonction sera visible depuistest1.go
.la source
main
dans test2.go mais je n'ai pas réussi à exécuter test1.go en utilisantgo run test1.go
still. Pourquoi ?go run test1.go test2.go
Go Lang par défaut construit / exécute uniquement le fichier mentionné. Pour lier tous les fichiers, vous devez spécifier le nom de tous les fichiers lors de l'exécution.
Exécutez l'une des deux commandes ci-dessous:
Vous devriez faire la même chose si vous voulez les construire.
la source
Je cherchais la même chose. Pour répondre à votre question " Comment appeler la démo dans test2 depuis test1? ", Voici comment je l'ai fait. Exécutez ce code avec la
go run test1.go
commande. Modifiez le CURRENT_FOLDER au dossier où test1.go est.test1.go
lib \ test2.go
Placez le fichier test2.go dans le sous-dossier
lib
la source
package lib; expected main
Si vous venez d'exécuter
go run test1.go
et que ce fichier a une référence à une fonction dans un autre fichier dans le même package, une erreur se produira car vous n'avez pas dit à Go d'exécuter l'ensemble du package, vous lui avez dit de n'exécuter que ce fichier.Vous pouvez dire à go de s'exécuter en tant que package complet en regroupant les fichiers en tant que package dans l'exécution de plusieurs manières. Voici quelques exemples (si votre terminal est dans le répertoire de votre package):
go run ./
OU
go run test1.go test2.go
OU
go run *.go
Vous pouvez vous attendre au même comportement en utilisant la commande build, et après avoir exécuté l'exécutable créé, il s'exécutera comme un package groupé, où les fichiers connaissent les autres fonctions, etc. Exemple:
go build ./
OU
go build test1.go test2.go
OU
go build *.go
Et ensuite, simplement appeler l'exécutable à partir de la ligne de commande vous donnera une sortie similaire à l'utilisation de la commande run lorsque vous avez exécuté tous les fichiers ensemble comme un package complet. Ex:
./test1
Ou quel que soit le nom de votre fichier exécutable qui est appelé lors de sa création.
la source