Tôi đang cố gắng tạo một máy tính đơn giản trong Go. Tôi đang thiết kế nó theo cách mà tôi có thể xây dựng một giao diện dòng lệnh đầu tiên và dễ dàng trao đổi trong giao diện GUI. Vị trí dự án là $GOPATH/src/gocalc
(tất cả các đường dẫn sau đây đều liên quan đến vị trí dự án). Logic giao diện dòng lệnh được lưu trữ trong một tệp gocalc.go
. Logic máy tính được lưu trữ trong các tệp calcfns/calcfns.go
và operations/operations.go
. Tất cả các file có tên gói giống với tên tập tin (phần mở rộng sans) của họ ngoại trừ chương trình chính, gocalc.go
, mà là trong package main
Cấu trúc gói xây dựng với các gói con/gói
calcfns.go
nhập khẩu operations.go
qua import "gocalc/operations"
; gocalc.go
nhập khẩu calcfns.go
qua import "gocalc/calcfns"
Để tóm tắt:
$GOPATH/src/gocalc/
gocalc.go
package main
import "gocalc/calcfns"
calcfns/
calcfns.go
package calcfns
import "gocalc/operations"
operations/
operations.go
package operations
Khi tôi cố gắng go build operations
(từ dir dự án), tôi nhận được câu trả lời: can't load package: package operations: import "operations": cannot find package
Khi tôi cố gắng go build gocalc/operations
, tôi nhận được can't load package: package gocalc/operations: import "gocalc/operations": cannot find package
Khi tôi cố gắng go build operations/operations.go
, nó biên soạn tiền phạt
Khi tôi cố gắng go build calcfns
hoặc go build gocalc/calcfns
, tôi nhận được thông báo can't load package...
, tương tự như các thông báo đang hoạt động; Tuy nhiên, khi tôi cố gắng xây dựng calcfns/calcfns.go
nó cuộn cảm trên báo cáo kết quả nhập khẩu: import "gocalc/operations": cannot find package
Cuối cùng, khi tôi cố gắng go build .
từ dir dự án, nó cuộn cảm tương tự như đoạn trước: import "gocalc/calcfns": cannot find package
Làm thế nào tôi nên cấu trúc con tôi các gói và/hoặc báo cáo nhập khẩu theo cách mà go build
sẽ không thành công?
Không, 'hoạt động' không cố tự nhập. ;) Nhưng 'go env' của bạn đã cho tôi thấy rằng tôi đã sử dụng' GOPATH = $ HOME/Projects/Go' thay vì 'export GOPATH = $ HOME/Projects/Go', vốn là thủ phạm thực sự. Điều thú vị là, 'echo $ GOPATH' vẫn tạo ra" '[abs path to ~]/Projects/Go'"; Tuy nhiên, 'đi env' cho thấy' GOPATH = "" 'hoặc một số như vậy. Cám ơn vì sự gợi ý. +1 – weberc2