Bolehkah Anda Menggabungkan Pustaka dan CLI dalam Direktori Yang Sama?
Mempunyai direktori dengan pakej berasingan untuk perpustakaan (fungsi yang dieksport) dan antara muka baris arahan (boleh laku CLI) menimbulkan persoalan sama ada ia praktikal. Isu timbul apabila pengkompil go memerlukan kedua-dua pakej dengan fungsi "utama" untuk pelaksanaan program dan perpustakaan dengan fungsinya.
Masalah: Pelbagai Pakej
Seperti yang ditunjukkan oleh contoh yang diberikan, jika kedua-dua pakej "utama" dan perpustakaan wujud bersama dalam direktori yang sama, pengkompil go mengadu tentang mencari berbilang pakej dalam yang sama direktori.
Penyelesaian: Pakej Bersarang
Daripada mengekalkan pakej dalam direktori yang sama, penyelesaian mudah ialah mencipta subdirektori baharu dalam direktori induk ke rumah sama ada perpustakaan atau pakej CLI. Ingat untuk mengemas kini import anda untuk menggambarkan lokasi baharu pakej.
Contoh dengan Pakej Bersarang
Dalam contoh yang disemak di bawah, pakej "a" dialihkan ke subdirektori baharu "a" dalam direktori "so-multipack":
so-multipack/ a/ a.go main.go
Dikemas kini main.go
package main import "../so-multipack/a" func main() { a.Hello() }
Dikemas kini a/a.go
package a import "fmt" func Hello() { fmt.Println("hello from a") }
Kompilasi Berjaya
Menggunakan struktur direktori yang dikemas kini, arahan go kini dijalankan berjaya:
go run main.go # Output: hello from a go build # Creates a "so-multipack" executable
Dengan menyarangkan pakej dalam direktori induk yang sama, kami boleh berjaya menampung kedua-dua pustaka dan CLI boleh laku.
Atas ialah kandungan terperinci Bolehkah saya Menggabungkan Pustaka Go dan CLI dalam Direktori yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!