Bolehkah Dua Pakej Berada dalam Direktori Yang Sama?
Apabila membangunkan projek yang memerlukan kedua-dua perpustakaan dan antara muka baris perintah (CLI), ia adalah biasa untuk menghadapi konflik antara dua pakej yang sedia ada dalam direktori yang sama. Disebabkan oleh keperluan pengkompil Go untuk pakej bernama "utama" dengan "func main" sebagai titik masuk, adalah dianggap mustahil untuk mempunyai pakej berasingan untuk kedua-dua perpustakaan dan CLI.
Penyelesaian : Struktur Pakej Bersarang
Walau bagaimanapun, terdapat penyelesaian untuk isu ini dengan mengalihkan kedua-dua pakej ke dalam folder baharu dalam direktori yang sama dengan fail "main.go". Perkara utama ialah memastikan pakej baharu diimport dari laluan yang betul dalam "$GOPATH".
Contoh:
Pertimbangkan struktur direktori yang dikemas kini:
whatever.io/ myproject/ a/ # New folder a.go main.go
Dalam "main.go", import pakej baharu daripada laluan bersarangnya:
package main import ( "../myproject/a" ) func main() { a.Hello() }
In "a.go", tentukan fungsi untuk pustaka:
package a import ( "fmt" ) func Hello() { fmt.Println("hello from a") }
Membina dan Menjalankan:
Kini, anda boleh membina dan menjalankan projek dengan jayanya:
go run main.go # Prints "hello from a" go build # Creates the executable without errors
Penyelesaian ini membolehkan anda mempunyai kedua-dua perpustakaan (pakej "a") dan CLI (pakej "utama") dalam direktori yang sama, menyelesaikan konflik yang disebabkan oleh mempunyai dua pakej dengan nama yang sama dalam direktori yang sama.
Atas ialah kandungan terperinci Bolehkah Projek Go Mempunyai Kedua-dua Perpustakaan dan CLI dalam Direktori yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!