Ich versuche, einen einfachen Taschenrechner in Go zu machen. Ich entwerfe es so, dass ich zuerst eine Befehlszeilenschnittstelle erstellen und in einer GUI-Schnittstelle austauschen kann. Der Projektstandort ist $GOPATH/src/gocalc
(alle nachfolgenden Pfade beziehen sich auf den Projektstandort). Die Logik der Befehlszeilenschnittstelle wird in einer Datei gocalc.go
gespeichert. Die Rechnerlogik ist in den Dateien calcfns/calcfns.go
und operations/operations.go
gespeichert. Alle Dateien haben Paketnamen identisch mit ihren Dateinamen (ohne Erweiterung), außer dem Hauptprogramm, gocalc.go
, die in den package main
Erstellen von Paketstruktur mit Kind-/Unterpaketen
calcfns.go
Einfuhren operations.go
über import "gocalc/operations"
ist; gocalc.go
Importe calcfns.go
über import "gocalc/calcfns"
Fassen wir zusammen:
$GOPATH/src/gocalc/
gocalc.go
package main
import "gocalc/calcfns"
calcfns/
calcfns.go
package calcfns
import "gocalc/operations"
operations/
operations.go
package operations
Wenn ich versuche zu go build operations
(aus dem Projekt dir), bekomme ich die Antwort: can't load package: package operations: import "operations": cannot find package
Wenn ich go build gocalc/operations
versuchen, erhalte ich can't load package: package gocalc/operations: import "gocalc/operations": cannot find package
Wenn ich go build operations/operations.go
versuchen es kompiliert fein
Wenn ich versuche, go build calcfns
oder go build gocalc/calcfns
, bekomme ich can't load package...
Nachrichten, ähnlich denen in den Betrieben; aber wenn ich versuche, calcfns/calcfns.go
es Drosseln auf der Import-Anweisung zu bauen: import "gocalc/operations": cannot find package
Schließlich, wenn ich go build .
aus dem Projekt dir versuchen, es würgt ähnlich den vorherigen Absatz: import "gocalc/calcfns": cannot find package
Wie soll ich mein Kind strukturiere Pakete und/oder importieren Aussagen in einer Weise, dass go build
wird nicht fehlschlagen?
Nein, 'operations' nicht versuchte, sich selbst zu importieren. ;) Aber dein 'go env' hat mir gezeigt, dass ich' GOPATH = $ HOME/Projects/Go' anstelle von 'export GOPATH = $ HOME/Projects/Go' benutzt habe, was der eigentliche Schuldige war. Interessanterweise erzeugte "echo $ GOPATH" immer noch "' [abs path to ~]/Projects/Go' "; "go env" zeigte jedoch "GOPATH =" "oder ähnliches. Danke für den Vorschlag. +1 – weberc2