# #go #module #mod
Вопрос:
У меня есть публичное хранилище https://github.com/zhksoftGo/Packet. Я поместил в него несколько общих файлов go. В настоящее время их два.
Packet.go under github.com/zhksoftGo/Packet
TypeDefineCactus.go under github.com/zhksoftGo/Packet/protocol/Cactus/
Я сталкиваюсь с проблемами при импорте одного из них.
import "github.com/zhksoftGo/Packet" // works fine
import "github.com/zhksoftGo/Packet/protocol/Cactus" // "cannot find package"
/файл /referer project .mod:
module github.com/zhksoftGo/SnowWolf
go 1.15
require (
github.com/gookit/slog v0.1.3
github.com/panjf2000/gnet v1.4.2
github.com/smartystreets/goconvey v1.6.4 // indirect
github.com/zhksoftGo/Packet v0.0.0-20210320131229-5311a044e61f
gopkg.in/ini.v1 v1.62.0
)
Я уже установил GO111MODULE=вкл. Может ли кто-нибудь помочь в этом?
Комментарии:
1. Можете ли вы попробовать добавить
replace github.com/zhksoftGo/Packet => /absoule/path/to/your/project
в свой файл go.mod, привести его в порядокgo mod tidy
и снова создать?2. Я пробовал и не вижу никаких проблем github.com/alessiosavi/StackOverflow/blob/master/Go/66742528/…
3. @zhk_tiger ваш генератор вставляет
<U FEFF>
(не видно) в начало файла , который разбивает весь пакет.4. @zhk_tiger вот как выглядит файл, когда я открываю его в vim: скриншот . После удаления символа пробела нулевой ширины , по которому найден пакет
go build
, хотя программа все еще не компилируется , потому что на многие поля ссылаются без префикса получателя, напримерmType.Write(pak)
, должно бытьv.mType.Write(pak)
, как только вы исправите эти ошибки, ваш Main2 скомпилируется.5. @mkopriva Да! Это и есть причина. Этот вопрос смущал меня несколько дней, ты спас мою задницу. Спасибо! Подсказка об ошибке Go нуждается в улучшении. Я программист c/cpp, только недавно учился Go. Этот поход действительно особенный.
Ответ №1:
Основная причина в том, что мой генератор вставляет символы спецификации utf-8 в сгенерированный заголовок файла Go. Это работает, если обычный файл Go импортирует сгенерированный файл Go. Но не работает, если в сгенерированный файл Go импортирован другой сгенерированный файл Go. Поэтому для исходного файла Go нам лучше использовать UTF-8.