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

5 回复

如果整个文件与您要导入的文件处于相同的嵌套层级,则无需注册导入。只需在主文件中引用变量 Username = "some" 即可。

Username = "some"

更多关于Golang中无法导入自定义包的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


仅仅使用随机限定符没有帮助,你需要先通过完全限定名称import一个包。

根据我对截图的正确理解,在你的情况下应该是import "user"

import "user"

如果使用GoLand,最好使用IDE构建器:

55

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

59

这是一个典型的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创建模块后,可以使用完整的模块路径导入本地包。

回到顶部