Ik probeer een standaard go-programma te schrijven dat een functie aanroept in een ander bestand, maar een deel van hetzelfde pakket. Het keert echter terug:
undefined: NewEmployee
Hier is de broncode:
main.go
:
package main
func main() {
emp := NewEmployee()
}
employee.go
:
package main
type Employee struct {
name string
age int
}
func NewEmployee() *Employee {
p := &Employee{}
return p
}
func PrintEmployee (p *Employee) {
return "Hello world!"
}
Antwoord 1, autoriteit 100%
Lees a.u.b. “Go-code schrijven”.
Gebruik go build
of go install
in de pakketdirectory, of geef een importpad op voor het pakket. Gebruik geen bestandsargumenten voor build
of install
.
Hoewel je bestandsargumenten kunt gebruiken voor go run
, moet je in plaats daarvan een pakket bouwen, meestal met go run .
, hoewel je bijna altijd go install
, of go build
.
Antwoord 2, autoriteit 45%
Ik had net hetzelfde probleem in GoLand (dat is Intellij IDEA for Go) en heb een oplossing bedacht. U moet de Run kind
wijzigen van File
in Package
of Directory
. Je kunt dit kiezen uit een vervolgkeuzelijst als je naar Run/Edit
Configuraties gaat.
Bijvoorbeeld: gebruik voor pakket ~/go/src/a_package
een Package path
van a_package
en een Directory
van ~/go/src/a_package
en Run kind
van Package
of Directory
.
Antwoord 3, autoriteit 12%
Als je go run
gebruikt, voer dan go run *.go
uit. Het zal automatisch alle go-bestanden in de huidige werkdirectory vinden, compileren en vervolgens uw hoofdfunctie uitvoeren.
Antwoord 4, autoriteit 5%
Je kunt een van de volgende dingen proberen:
Methode 1:
- Stel dat uw projectnaam
MyProject
- Ga naar je pad, voer
go build
- Het zal een uitvoerbaar bestand maken als uw projectnaam (“MyProject”)
- Voer vervolgens het uitvoerbare bestand uit met
./MyProject
is
uit
Je kunt beide stappen tegelijk uitvoeren door go build && ./MyProject
. Go-bestanden van het package main
worden gecompileerd tot een uitvoerbaar bestand.
Methode 2:
- Voer gewoon
go run *.go
uit. Er wordt geen uitvoerbaar bestand gemaakt, maar het werkt wel.
Antwoord 5, autoriteit 4%
go run .
zal al je bestanden uitvoeren. Het ingangspunt is de functie main()
die uniek moet zijn voor het main
pakket.
Een andere optie is om het binaire bestand te bouwen met go build
en het uit te voeren.
Antwoord 6, autoriteit 2%
Als je een functie uit een ander go-bestand wilt aanroepen en je gebruikt Goland, zoek dan de optie ‘Configuratie bewerken’ in het menu Uitvoeren en verander het type run van Bestand naar Directory. Het wist alle fouten en stelt je in staat om functies uit andere go-bestanden aan te roepen.