fonction golang «non définie» déclarée dans un autre fichier?

J’essaie d’écrire un programme go de base qui appelle une fonction sur un fichier différent, mais une partie du même package. Cependant, il retourne:

undefined: NewEmployee 

Voici le code source:

main.go :

 package main func main() { emp := NewEmployee() } 

employee.go :

 package main type Employee struct { name ssortingng age int } func NewEmployee() *Employee { p := &Employee{} return p } func PrintEmployee (p *Employee) { return "Hello world!" } 

Merci d’avance

    Veuillez lire “Comment écrire le code Go” .

    N’utilisez pas /src dans votre GOPATH . Les paquets sont situés dans $GOPATH/src .

    Pour build ou install vous devez avoir vos fichiers dans un répertoire de package.

    Pour go run , vous devez fournir tous les fichiers en argument:

     go run main.go employee.go 

    Mais, vous devriez presque toujours utiliser go install , ou go build (et de préférence le premier, car go build provoque de la confusion lorsque vous travaillez avec des paquetages non principaux)

    J’ai juste eu le même problème avec GoLand et ma solution a fonctionné. Vous devez modifier le Run kind de File en Package ou Directory . Vous pouvez choisir ceci dans une liste déroulante si vous allez dans les configurations d’ Run/Edit .

    Pour le package ~/go/src/a_package , le Package path du Package path est a_package et le Directory est ~/go/src/a_package . Vous pouvez choisir le Run kind que vous aimez.

    Si vous souhaitez appeler une fonction à partir d’un autre fichier go et que vous utilisez Goland, recherchez l’option ‘Modifier la configuration’ dans le menu Exécuter et remplacez le type d’exécution de Fichier par Répertoire. Il efface toutes les erreurs et vous permet d’appeler des fonctions à partir d’autres fichiers go.

    Si vous utilisez go run , go run go run *.go . Il va automatiquement trouver tous les fichiers aller dans le répertoire de travail en cours, comstackr et ensuite exécuter votre fonction principale.

    Si votre dossier source est structuré / go / src / blog (en supposant que le nom de votre dossier source est blog).

    1. cd / go / src / blog … (cd dans le dossier qui contient votre paquet)
    2. aller installer
    3. Blog

    Cela devrait exécuter tous vos fichiers en même temps, au lieu que vous deviez lister les fichiers manuellement ou “dénigrer” une méthode sur la ligne de commande.