Мне нужна помощь в понимании того, что не так с моим макетом в простом веб-приложении.Мой файл main.go не может видеть другие файлы
$GOPATH/src/example.com/myweb
Я тогда 2 файла:
$GOPATH/src/example.com/myweb/main.go
$GOPATH/src/example.com/myweb/api.go
Оба файла имеют:
пакет главный
Файл api.go выглядит следующим образом:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
type API struct {
URI string
Token string
Secret string
client *http.Client
}
...
Мои Файл main.go выглядит так:
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)
}
В коде я исключен, я в основном использовать структуры, которые определены в моем файле api.go, и я получаю эту ошибку при выполнении:
go run main.go
# command-line-arguments
./main.go:16: undefined: API
./main.go:23: undefined: User
Что именно я здесь делаю неправильно?
Я попытался изменить имя пакета в api.go на myweb, но это не помогло.
Возможно, я использую имя пакета myweb? Есть ли всего 1 файл, чтобы иметь главную?
go run main.go api.go – Uvelichitel
@ Увеличитель есть лучший способ? Если я буду продолжать добавлять файлы, будет больно печатать все имена файлов. – Blankman
Да, вы должны использовать 'go install' или' go build' – JimB