Golang如何导入本地包?无法导入user包下User结构体问题求助
Go本地包导入失败问题解决方案
- 首先确认你的项目是否使用Go Module管理依赖,检查项目根目录是否存在
go.mod文件,若不存在先执行go mod init 你的项目名完成初始化。 - 确认User结构体所在文件的包声明正确,定义User的Go文件第一行必须为
package user,你当前定义的User首字母已大写,符合跨包导出的要求,这一步无需调整。 - 导入路径要符合Go Module规则,不要使用
./user这类相对导入路径,要写完整导入路径,比如你的项目模块名为myapp,user包存放在根目录的user文件夹下,就在Post结构体所在文件的顶部写导入语句import "myapp/user"。 - 跨包使用导出类型必须加包名前缀,你当前代码报错的核心原因是没有加包名,需要把
[]User修改为[]user.User。
修正后的Post结构体代码示例:
// 导入路径替换为你项目的实际user包路径 import "你的项目模块名/user" type Post struct { URL string `json:"url,omitempty"` Caption string `json:"caption,omitempty"` Likes []user.User `json:"likes,omitempty"` // 补充user包前缀即可正常使用 }
如果你的Post结构体和User结构体本身就在同一个包下,不需要做导入操作,直接用[]User即可,报错大概率是两个文件的package声明不一致导致的,确认两个文件第一行的包声明完全相同即可。
内容的提问来源于stack exchange,提问作者seelen
相关产品推荐
相关产品推荐

