2017-04-20 3 views
-1

Wie der Titel hier ist meine aktuelle Struktur für Go App, statische HTTP-Seite dient und auch Daten über Websocket sendet.Korrekte Projektstruktur für den Import von Paketen

In der Struktur unten Ich habe 2 Pakete Konstanten und Haupt- und bin nicht in der Lage Konstanten aus dem Hauptpaket zu verwenden.

Server-Client Game 
    assets 
     css 
      index.css 
     js 
      app.js 
     templates 
      index.html 
    constants 
     server.go 
     game.go 
    main 
     main.go 
     hub.go 
     player.go 

Sollte ich Go-Arbeitsbereich verwenden? oder kann ich es so wie es funktioniert?

Mein Projekt ist zur Zeit nicht in der GoPath src, die ich vorher ‚Arbeitsplatz‘ rief.

+2

Ich weiß nicht, was Sie fragen. "Ich kann keine Konstanten aus dem Hauptpaket verwenden" - Was bedeutet das? Was versuchst du zu machen? Was scheitert? "Soll ich den Go-Arbeitsbereich verwenden?" Was meinst du mit einem Go-Arbeitsbereich? "Kann ich es so funktionieren lassen wie es ist?" Kannst du bekommen, was wie funktioniert? Und wie ist es? – Flimzy

Antwort

3

sollten Sie einen gopath haben, der mindestens src und bin enthalten sollte. Ihr Projektquellcode wird in den Ordner "src" verschoben, und Ihre veröffentlichten Binärdateien werden in den Ordner "bin" verschoben.

zum Beispiel, wenn Ihr gehen Pfad auf c:/go-apps dann Ihr Projekt wie folgt aussehen. . .

c:/go-apps/src/Server-Client Game/ ... 

wenn Sie go install ausgeben, wird Ihre Binärdateien in c:/go-apps/bin sein. da gehen git Repositories auch unterstützt, können Sie sie direkt in Ihr Projekt wie dieses importieren (vorausgesetzt, es öffentlich ist)

import "github.com/gorilla/mux" 

eine Aussage wie diese das beliebte Mux-Paket von Github importiert. Sie können erwarten, dass dies in Ihrem gopath zu finden ist

auch Sie können mehrere gopatops haben. Wenn Sie eine Anwendung kompilieren, sucht sie in Ihrem (Ihren) gopath (s) nach dem Paket. Wenn das Paket nicht verfügbar ist, wird es automatisch heruntergeladen.

alternativ zu gehen installieren, go build können die Binärdateien im aktuellen Ordner zu bauen. einfach herunterladen alle Abhängigkeiten ohne kompilieren verwenden go get.

wie für die Ordnerstruktur, ja, das sollte in Ordnung sein, aber ich habe in der Regel meine Haupt im Stammverzeichnis seit package main und func() main ist der Eintrittspunkt und nur ein Paket pro Verzeichnis in go erlaubt.

1

Sie haben Ihr constants Paket in Ihren Haupt-Dateien import. Sie importieren Ihre eigenen Pakete genauso wie jedes andere nicht standardmäßige Paket über den Pfad in Ihrem Verzeichnis $GOPATH/src. Also, wenn Ihr Projekt in dem Ordner sitzt $GOPATH/src/myproject, würden Sie Ihre Konstanten Paket importieren wie folgt:

import "myproject/constants" 

Und da eine exportierte (Großbuchstaben) konstant z.B. SomeConstant, würden Sie in Ihrem Hauptpaket als constants.SomeConstant darauf verweisen.

+0

Und wenn mein Projekt nicht in meinem gopath Verzeichnis liegt? – Higeath

+0

Ich werde darauf in der Sache verzichten und sage es einfach in den gopath. Es liegt aber an dir. https://softwareengineering.stackexchange.com/questions/271324/is-having-source-code-for-a-go-project-outside-gopath-a-bad-idea – RayfenWindspear