2012-05-15 5 views
11

Paketimi başka bir paket tarafından alınabilecek şekilde nereye yerleştirmeliyim?Paketimi nasıl bulabilirim?

$ tree 
. 
├── main.go 
└── src 
    └── test.go 

1 directory, 2 files 

$ cat src/test.go 
package test 

$ cat main.go 
package main 

import "test" 

$ go build main.go 
main.go:3:8: import "test": cannot find package 
+0

GOPATH değeri nedir? –

+0

GOPATH ayarlanmamış. –

cevap

8

sizin GOPATH ayarlayın vermelidir. GOPATH içinde paket foo kaynak (lar) Put/src/opsiyonel-ne/foo/*. Gidip

import "optional-whatever/foo" 

olarak kodunda kullanmak Açıkça foo yüklemek değil ihtiyacını, go aracı yapmak bir inşa aracıdır, gerektiğinde bu sizin için otomatik olarak yapacağız.

+2

Açıklığa kavuşturmak için: paket bir dizin (ör. 'Foo') olacaktır. Klasörü tek tek kaynak dosyaları değil, modül olarak içe aktaracaksınız. – VOIDHand

8

Olması gereken birkaç şey var. Önce "test" paketini yüklemelisiniz: o pkg oluşturmak için gerekli değildir

$ export GOPATH=$(pwd) # Assumes a bourne shell (not csh) 
$ mkdir src/test 
$ mv src/test.go src/test/test.go 
$ mkdir pkg     # go install will put packages here 
$ go install test   # build the package and put it in $GOPATH/pkg 
$ go build main.go 

Not olduğunu, go install sizin için yapacak kadar. Eğer (BTW genellikle kötü bir isim,) testi paketini yükledikten sonra go build main.go artık farklı hataları (örneğin, "ithal ve kullanılmayan")

+0

Anladım, teşekkürler William. –

+0

Bugüne kadarki bir acemi için en temiz açıklama. – gmile

-4

belki, main.go ile aynı dizinde test.go dosyasını koyabilirsiniz ve test.go içinde , böyle bir şeyi kullanır:

import "./test"