Golang中无法导入自定义包的问题如何解决
Golang中无法导入自定义包的问题如何解决
package main
import (
"fmt"
"user" // 这里导入的是os/user而不是自定义的user包
)
func main() {
fmt.Println(user.Username)
}
// user/user.go
package user
var Username = "John"
我无法导入我的包。 我有一个名为"Education"的项目,其中有一个目录"7_package",里面有src(main.go)->user(user.go) 在user.go中我有变量Username。当我想要从main.go中调用这个值作为user.Username时,它导入的是"os/user"而不是"user",当我删除"os/“时,它显示"构建约束排除了’C:/Go/src/user’中的所有Go文件”,但我的项目路径是C:/user/prog/goworkspace/[这里是我所有的项目] 我使用的是GoLand IDE
更新:创建了mypack->src->friend,在src中-main.go(fmt.Println(friend.Username)),在friend中-friend.go (var Username = “Tom”)。现在我甚至无法尝试导入这个包
更多关于Golang中无法导入自定义包的问题如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html
如果整个文件与您要导入的文件处于相同的嵌套层级,则无需注册导入。只需在主文件中引用变量 Username = "some" 即可。
Username = "some"
更多关于Golang中无法导入自定义包的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
仅仅使用随机限定符没有帮助,你需要先通过完全限定名称import一个包。
根据我对截图的正确理解,在你的情况下应该是import "user"。
import "user"
如果使用GoLand,最好使用IDE构建器:

它位于IDE屏幕的右上角,编辑构建配置,并指定从目录构建:

不:



这是一个典型的Go模块和导入路径配置问题。根据你的描述,问题在于没有正确设置Go模块和导入路径。以下是解决方案:
解决方案
1. 初始化Go模块
在你的项目根目录下运行:
go mod init Education
2. 正确的目录结构
Education/
├── go.mod
├── main.go
└── user/
└── user.go
3. 修改导入语句
在main.go中使用完整的模块路径导入:
package main
import (
"fmt"
"Education/user" // 使用完整的模块路径
)
func main() {
fmt.Println(user.Username)
}
4. 确保文件内容正确
user/user.go:
package user
var Username = "John"
5. 对于第二个项目结构
对于mypack项目,同样需要初始化模块:
cd mypack
go mod init mypack
然后修改导入:
package main
import (
"fmt"
"mypack/friend" // 使用模块路径
)
func main() {
fmt.Println(friend.Username)
}
目录结构:
mypack/
├── go.mod
├── main.go
└── friend/
└── friend.go
friend/friend.go:
package friend
var Username = "Tom"
6. 在GoLand中的操作
- 确保项目在GoLand中正确打开为Go模块项目
- 如果使用GoLand的终端,确保在项目根目录执行
go mod init命令 - 重新加载项目:File → Reload All from Disk
7. 验证构建
在项目根目录运行:
go run main.go
输出应该是:
John
关键点:Go 1.11+版本推荐使用Go模块管理依赖,不再依赖GOPATH下的src目录结构。通过go mod init创建模块后,可以使用完整的模块路径导入本地包。

