2016-03-29 18 views
-3

gitmek özel içe aktarılabilir:İşte benim ana dosyası (server.go) 'dir modülünü

package main 

import (
    "net/http" 
    "routes" 
) 

func main() { 
    http.HandleFunc("/", routes.Handler) 
    http.ListenAndServe(":8000", nil) 
} 

Benim yolları modül aynı dizinde: Ben bu hatayı alıyorum go run server.go ben çalıştırdığınızda

package routes 

func Handler(w http.ResponseWriter, r *http.Request) { 
    // stuff... 
} 

: benim server.go dosyaya routes.go kod yerleştirdiğinizde

server.go:6:5: cannot find package "routes" in any of: 
    /usr/local/Cellar/go/1.6/libexec/src/routes (from $GOROOT) 
    ~/server/src/routes (from $GOPATH) 

, bu r iyi değil. Modülü alamıyorum. Geçerli dizime $GOPATH değişkenini ayarlamayı denedim, proje dizinimi yeniden düzenleyerek bir here taklit etmeyi denedim. Seçeneklerin tükeniyor. Bu geniş çapta benimsenen bir dilin, hemen hemen her dilde nispeten kolay olan bir şeyin nasıl yapıldığına dair zayıf bir dokümantasyona sahip olması gariptir. Lütfen yanlış yaptığımı bulmama yardım et.

GÜNCELLEME:

Bu go env

GOARCH="amd64" 
GOBIN="" 
GOEXE="" 
GOHOSTARCH="amd64" 
GOHOSTOS="darwin" 
GOOS="darwin" 
GOPATH="/Users/me/server" 
GORACE="" 
GOROOT="/usr/local/Cellar/go/1.6/libexec" 
GOTOOLDIR="/usr/local/Cellar/go/1.6/libexec/pkg/tool/darwin_amd64" 
GO15VENDOREXPERIMENT="1" 
CC="clang" 
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common" 
CXX="clang++" 
CGO_ENABLED="1" 
+2

'route' adlı bir paket' ~/server/src/route' dizininde olmalıdır. Tek bir dizinde birden çok paketiniz olamaz. – JimB

+4

Ayrıca şunu da okuyun: https://golang.org/doc/code.html#Yükleme yollarındaki iş akışları burada (golang.org -> Docs aracılığıyla) ele alınmıştır. – elithrar

+0

Bu bana saçma geliyor. Neden gitmek, keyfi bir proje yapısını zorluyor? – dopatraman

cevap

2

Rota paketini /Users/me/server/src/routes'a taşıyın ve gitmek için iyi olmalısınız.

+0

zomg, teşekkürler. – dopatraman

3

"How To Write Go Code" Makalenin çıktısı bu açıklar Getting Started sayfada tavsiye edilen başlangıç ​​noktası haktır. (Teşekkür @elithrar)

Peter Bourgon iyi yapılandırılmış Go uygulamalarında bir good write up vardır.

Bir routes klasörde routes paket var veya ana paket yolları ise size gerçek routes paketi ile o klasör içindeki bir lib klasör olabilir klasörü gelmelidir.

Klasör yapısının nedeni, import ifadelerinin nasıl çalışır. Ithalatların çalıştığı şekilde, aynı klasörde birden fazla paketin etkinleştirilmesi belirsiz olacaktır.

+0

Neden go derleyici 'src' dizini arar? '~/Server/src/route'' – dopatraman

+2

'den bahsettiğim hata 'GOPATH' muhtemelen' ~/server' olarak ayarlanmış. – elithrar

+0

Tam hata mesajını yapıştırırsanız, detaylandırma yapabilirim ... GOPATH'nız '~/server' olarak ayarlanmış gibi geliyor olabilir mi? ya da '.' –