去“找不到包”

问题描述

我有一个公共存储库 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 项目 .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=on。有人可以帮忙吗?

解决方法

根本原因是我的生成器在生成的 Go 文件头中插入了 utf-8 BOM 字符。如果普通的 Go 文件导入生成的 Go 文件,它就会起作用。但如果生成的 Go 文件导入了另一个生成的 Go 文件,则不起作用。 所以对于 Go 源文件,我们最好使用 UTF-8。