ВНИМАНИЕ, этот вопрос касается спецификаций языка Go, а не рекомендаций или рекомендаций.
Я прочитал много статей о пакетах, но до сих пор не совсем понимаю взаимосвязь между каталогом и именем пакета. Вот мой пример.
Моя структура проекта похожа на следующие снимки экрана. Когда я делаю go run ~/go/src/myproj/main.go, ошибка говорит:
src \ myproj \ main.go: 5: 2: не удается найти пакет myproj / pa / pb ни в одном из: c: \ go \ src \ myproj \ pa \ pb (из $ GOROOT) C: \ Users \ terry \ go \ src \ myproj \ pa \ pb (из $ GOPATH)

Однако, если я изменю package pb на package pa в p.go, и изменю импорт с "myproj/pa/pb" на "myproj/pa", и изменю fmt.Print(pb.Greet) на fmt.Print(pa.Greet) в main.go, это сработает. Должен ли самый внутренний каталог соответствовать имени объявления пакета? Моя версия для игры — 1.14.4
Должен ли самый внутренний каталог соответствовать имени объявления пакета? Нет, конечно нет. Но это очень разумное соглашение, и вы никогда не должны его нарушать, потому что люди будут ненавидеть вас (справедливо), если вы это сделаете. — person Peiti Li schedule 30.06.2020
