Saya mencoba membuat dan menggunakan paket khusus di Go. Mungkin sesuatu yang sangat jelas tetapi saya tidak dapat menemukan banyak informasi tentang ini. Pada dasarnya, saya memiliki dua file ini di folder yang sama:
mylib.go
package mylib
type SomeType struct {
}
main.go
package main
import (
"mylib"
)
func main() {
}
Ketika saya mencoba go run main.go
, saya mendapatkan kesalahan ini:
main.go:4:2: import "mylib": cannot find package
Saya sudah mencoba menjalankannya go build mylib.go
tetapi sepertinya tidak melakukan apa-apa (tidak ada file yang dihasilkan, tidak ada pesan kesalahan). Jadi ada ide bagaimana saya bisa melakukan ini?
go install
bawah direktorimylib
pertama, dan coba lagi.Jawaban:
Pertama, pastikan untuk membaca dan memahami dokumen "Bagaimana cara menulis kode Go" .
Jawaban aktual tergantung pada sifat "paket khusus" Anda.
Jika ini dimaksudkan untuk penggunaan umum, pertimbangkan untuk menggunakan apa yang disebut "tata letak kode Github" . Pada dasarnya, Anda menjadikan perpustakaan Anda
go get
proyek -tabel yang terpisah .Jika pustaka Anda untuk penggunaan internal, Anda bisa seperti ini:
Untuk menunjukkan:
Sekarang, di tingkat atas
main.go
, Anda bisaimport "myproject/mylib"
dan itu akan berhasil OK.sumber
mylib
kodemyproject2
? Maka jawabannya adalah "dengan menggunakanimport "myproject/mylib"
- idenya adalah bahwa Go mencari jalur yang diimpor di bawah setiap direktori yang diekstrak dariGOPATH
variabel lingkungan (mereka disebut" ruang kerja "), tetapi pencarian ini (untungnya) tidak rekursif, jadi jalur tersebut adalah secara efektif "berlabuh" di ruang kerja masing-masinggo mod
perkembangan terakhir , modul mungkin menjadi jawabannya (dango mod
mendukung pembatalan modul juga).Untuk jenis struktur folder ini:
Cara paling sederhana adalah dengan menggunakan ini:
sumber
foo/mylib
(dengan asumsi folder yang berisi main.go adalahfoo
).go install
istirahat. Jika Anda sedang membangun proyek mandiri yang Anda ingin orang unduh dan jalankango build
, ini baik-baik saja - namun, saya akan menggunakan "tata letak kode Github" yang disebutkan di atas (bahkan jika off bitbucket, atau serupa) jika Anda ingingo install
dukungan penuh .Untuk proyek yang dihosting di GitHub, inilah yang biasanya dilakukan orang:
mylib.go
main.go
sumber
Saya seorang programmer yang berpengalaman, tetapi, cukup baru di dunia Go! Dan saya akui saya menghadapi beberapa kesulitan untuk memahami Go ... Saya menghadapi masalah yang sama ketika mencoba mengatur file go saya di sub-folder. Cara saya melakukannya:
GO_Directory (yang ditugaskan ke $ GOPATH)
Pada File MyProject \ Entities \ Fiboo \ Client.go
pada file MyProject \ main.go
(Saya menjalankan Go 1.9 di Ubuntu 16.04)
Dan ingat teman-teman, saya pemula di Go. Jika apa yang saya lakukan adalah praktik buruk, beri tahu saya!
sumber
solusi lain:
tambahkan
src/myproject
$ GOPATH.Kemudian
import "mylib"
akan dikompilasi.sumber