Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Modul Go Mengendalikan Pakej Dalaman untuk Menghalang Import Luaran?
Memahami Pakej Dalaman
Pakej dalaman, dilambangkan dengan direktori "dalaman" , bertujuan untuk mengumpulkan kod berkaitan yang tidak sepatutnya didedahkan di luar projek. Dalam modul Go, pakej dalaman tidak boleh diimport oleh projek luaran.
Struktur Modul
Dalam contoh yang disediakan, struktur projek adalah seperti berikut:
project/ internal/ foo/ foo.go # package foo bar/ bar.go # package bar main.go
di mana main.go mengimport projek pakej dalaman/dalaman/foo dan project/internal/bar.
Import Isu
Isu yang anda hadapi semasa cuba mengimport pakej dalaman dari luar direktori projek. Pakej dalaman hanya boleh diimport dari dalam projek yang sama, jadi menggunakan projek laluan/dalaman/foo dan projek/dalaman/bar dari main.go tidak akan berfungsi.
Penyelesaian dengan Modul Go
Walau bagaimanapun, dengan pengenalan modul Go dalam Go v1.11, anda tidak lagi perlu menentukan laluan projek anda dalam $GOPATH/src. Buat fail go.mod dan tentukan modul pakej dalaman seperti berikut:
project/ go.mod main.go \---internal +---bar | bar.go | go.mod | \---foo foo.go go.mod
project/internal/bar/go.mod
module bar go 1.14
project/internal/bar/bar.go
package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") }
project/internal/foo/go.mod
module foo go 1.14
project/internal/foo/foo.go
package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
project/main.go
package main import ( "internal/bar" "internal/foo" ) func main() { bar.Bar() foo.Foo() }
project/go.mod
module project go 1.14 require internal/bar v1.0.0 replace internal/bar => ./internal/bar require internal/foo v1.0.0 replace internal/foo => ./internal/foo
Kunci Mata
Atas ialah kandungan terperinci Bagaimanakah Modul Go Mengendalikan Pakej Dalaman untuk Menghalang Import Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!