Golang导入包时报错,如何解决?
Golang导入包时报错,如何解决? 无法导入 myproject/game/helper2 (在任何位置都找不到包 “myproject/game/helper2”: /usr/local/go/src/myproject/game/helper2 (来自 $GOROOT) /home/prasnjit/dev/go/src/myproject/game/helper2 (来自 $GOPATH))编译器
代码的屏幕截图附在下方

更多关于Golang导入包时报错,如何解决?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
但是 game.Get 可以调用位于 helper2.go 中的函数。
不,只有当你以正确的方式导入包时才有可能:import moduleName/packageName
将 helper2.Get() 改为 game.Get(),并从导入中移除后缀字符串 /helper2。
你好!你应该将导入语句改为 import "myproject/game",并使用 game.Get() 来调用公共函数 Get。myproject/game 可以看到所有公共类型和声明,你始终可以使用包名作为前缀来使用/调用它们,在这个例子中就是 game.。

我已经尝试了你说的办法,但还是没能解决问题。
啊哈,你正在创建一个名为 main 的 Go 模块!😄,你绝不能创建任何在 Go 全局作用域中已使用的名称作为标识符、包或模块。请使用 go mod init myproject 重新创建你的模块,或者直接修改 go.mod 文件的第一行。
func main() {
fmt.Println("hello world")
}


这个错误表明Go编译器在$GOROOT和$GOPATH中都找不到myproject/game/helper2包。从截图看,你的项目结构是:
myproject/
├── game/
│ ├── helper/
│ │ └── helper.go
│ └── main.go
问题在于你试图导入helper2,但实际目录名是helper。以下是解决方案:
1. 检查实际包名和目录名
在helper/helper.go中确认包声明:
package helper // 不是 helper2
2. 修正导入语句
在main.go中,将导入语句改为:
import "myproject/game/helper"
3. 如果确实需要重命名包
如果你想使用helper2作为包名,需要:
- 修改目录名:
helper→helper2 - 修改
helper.go中的包声明:package helper2 - 保持导入语句不变:
import "myproject/game/helper2"
4. 使用go mod的正确方式 如果你的项目使用go modules(有go.mod文件),确保模块声明正确:
module myproject
go 1.16
然后使用完整模块路径导入:
import "myproject/game/helper"
5. 验证GOPATH设置 如果你使用GOPATH模式,确保项目在正确的位置:
echo $GOPATH
# 应该显示:/home/prasnjit/dev/go
项目路径应为:/home/prasnjit/dev/go/src/myproject
错误信息显示编译器在两个位置查找包:
/usr/local/go/src/myproject/game/helper2(GOROOT)/home/prasnjit/dev/go/src/myproject/game/helper2(GOPATH)
由于目录实际名为helper而非helper2,所以找不到包。修正导入路径或目录名即可解决。

