Ich brauche Hilfe, um zu verstehen, was mit meinem Dateilayout in einer einfachen Webanwendung nicht stimmt.Meine Datei main.go kann andere Dateien nicht sehen
$GOPATH/src/example.com/myweb
Ich habe dann zwei Dateien:
$GOPATH/src/example.com/myweb/main.go
$GOPATH/src/example.com/myweb/api.go
Beide Dateien haben:
Paket Haupt sieht
Die api.go Datei wie:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
type API struct {
URI string
Token string
Secret string
client *http.Client
}
...
Meine Die Datei main.go sieht folgendermaßen aus:
package main
import (
"github.com/gorilla/mux"
"html/template"
"net/http"
)
var (
templates = template.Must(template.ParseFiles("views/home.html", "views/history.html", "views/incident.html"))
api = API{
URI: "http://localhost:3000",
Token: "abc",
Secret: "123",
}
)
func renderTemplate(w http.ResponseWriter, tmpl string, hp *HomePage) {
..
..
}
func WelcomeHandler(w http.ResponseWriter, r *http.Request) {
..
..
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/", WelcomeHandler)
r.PathPrefix("/assets/").Handler(
http.StripPrefix("/assets/", http.FileServer(http.Dir("assets/"))))
http.ListenAndServe(":9000", r)
}
Im Code, den ich ausgeschlossen, ich structs im Grunde verwenden, die in meiner api.go-Datei definiert sind, und ich bekomme diese Fehlermeldung, wenn dabei:
go run main.go
# command-line-arguments
./main.go:16: undefined: API
./main.go:23: undefined: User
Was ich hier falsch genau mache?
Ich habe versucht, den Paketnamen in api.go zu myweb ändern, aber das hat nicht geholfen.
Soll ich den Paketnamen myweb verwenden? Ist nur 1 Datei Hauptsache?
gehen laufen main.go api.go – Uvelichitel
@Uvelichitel gibt es einen besseren Weg? Wenn ich weiterhin Dateien hinzufüge, wird es mir schwer fallen, alle Dateinamen so zu tippen. – Blankman
Ja, Sie sollten "go install" oder "go build" verwenden – JimB