Go项目导入本地包失败问题求助(含项目结构及代码)
Go本地包导入失败的解决办法
你的问题出在两个核心点:目录名与包名不匹配、跨包调用的函数未导出,按以下步骤修复即可:
1. 统一目录名与包名
你的项目目录是resolver,但resolver.go里声明的包名是resolvers,导入路径也写的resolvers,Go会因为找不到对应目录下的包而报错。有两种修正方式:
方式一:修改目录名
把resolver目录重命名为resolvers,保持和包名、导入路径一致,修改后项目结构:
- myproject - resolvers - resolver.go - main.go
方式二:修改包名与导入路径
将resolver.go里的包声明改为package resolver,同时把main.go中的导入路径改为github.com/kaleabbyh/foodrecipie/resolver。
2. 导出跨包调用的函数
Go中只有首字母大写的标识符才能被其他包访问,你定义的resolverfunc是小写,main包无法调用,需要改为大写(规范命名建议用ResolverFunc)。
修改后的resolver.go(以方式一为例)
package resolvers import "fmt" // 首字母大写,导出函数供其他包调用 func ResolverFunc() { fmt.Println("resolvers are running") }
修改后的main.go(以方式一为例)
package main import ( "fmt" "github.com/kaleabbyh/foodrecipie/resolvers" ) func main() { resolvers.ResolverFunc() fmt.Println("main is running") }
验证修复
在myproject目录下执行命令:
go run main.go
正常会输出:
resolvers are running main is running
内容的提问来源于stack exchange,提问作者kaleab
相关产品推荐
相关产品推荐

