Apabila mengatur kod Go, pakej dalaman menawarkan cara untuk mengekalkan modulariti dan enkapsulasi dalam projek. Dalam struktur kod yang diberikan, pakej "dalaman" dibuat dalam direktori "projek".
Walau bagaimanapun, seperti yang dinyatakan , mengimport daripada pakej dalaman di luar direktori induknya tidak boleh dilakukan. Ini kerana pakej dalaman tidak dieksport dan hanya boleh diakses dari dalam pokok sumber projek. Import luaran dari luar direktori projek hanya akan berfungsi untuk pakej yang terletak dalam pepohon $GOPATH/src.
Untuk menyelesaikan isu import, direktori projek boleh diletakkan di bawah $GOPATH/src. Ini memastikan bahawa pakej dalaman boleh diakses oleh pakej utama yang terletak di "project/main.go."
Sebagai alternatif, dengan pengenalan modul dalam Go v1.11 dan lebih baru, anda boleh menentukan modul untuk projek anda dengan mencipta fail go.mod. Fail ini menentukan lokasi setiap modul dalam projek anda. Berikut ialah contoh cara ia akan disediakan:
project/ go.mod main.go internal/ bar/ bar.go go.mod foo/ foo.go go.mod
go.mod untuk projek/dalaman/bar:
module bar go 1.14
bar. pergi:
package bar import "fmt" // Bar prints "Hello from Bar" func Bar() { fmt.Println("Hello from Bar") }
go.mod untuk projek/dalaman/foo:
module foo go 1.14
foo.go:
package foo import "fmt" // Foo prints "Hello from Foo" func Foo() { fmt.Println("Hello from Foo") }
main.go:
package main import ( "project/internal/bar" "project/internal/foo" ) func main() { bar.Bar() foo.Foo() }
Dalam persediaan ini, fail go.mod mentakrifkan laluan modul dan maklumat pergantungan untuk setiap pakej dalaman. Pernyataan gantian memastikan bahawa Go mengetahui tempat untuk mencari pakej dalaman, walaupun ia berada di luar pepohon $GOPATH/src standard.
Dengan pendekatan ini, anda boleh mengatur kod anda dengan mudah menggunakan pakej dalaman dan mengaksesnya dengan lancar daripada pakej utama, menyediakan kedua-dua modulariti dan kebolehaksesan dalam projek anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan dan Mengimport Pakej Dalaman dengan Betul dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!