Go导入本地models子目录报错package models is not in GOROOT如何解决
Go本地包导入报错修复指南
报错原因
Go 1.11版本之后默认使用Go Modules管理依赖包,不再支持源码级相对导入路径。你使用./models这种相对路径导入时,Go编译器会默认去GOROOT、GOPATH的src目录下搜索对应的包,自然找不到你项目内的本地包。
修复步骤
- 第一步:在项目根目录下执行模块初始化命令,替换成你自己的模块标识即可:
go mod init example.com/your-project-name
- 第二步:修改main.go中的导入语句,将相对路径替换为
模块名/包路径的格式:
import "example.com/your-project-name/models"
- 第三步:重新执行
go build即可正常构建。
多级子目录包导入方法
如果后续在models目录下创建多级子目录,直接按照模块名/父目录/子目录的规则拼接导入路径即可。
举个例子:你在models下创建了user子目录,user下又创建了address子目录,导入address包的语句为:
import "example.com/your-project-name/models/user/address"
注意事项
- 每个子目录需要单独声明自身的包名,通常包名和目录名保持一致即可
- 被外部包调用的函数、结构体、变量等需要首字母大写,才有权限被跨包访问
内容的提问来源于stack exchange,提问作者Koharim
相关产品推荐
相关产品推荐

