Golang中无法导入自定义模块的包怎么办

Golang中无法导入自定义模块的包怎么办 我有这样的目录结构 -

go
  |
  arrays
    |
    go.mod
    main.go
    twosum
     |
     twosum.go

Screenshot 2023-10-22 at 12.35.09 AM

我试图在 arrays 模块的 main.go 文件中导入我在 twosum 目录(包)中创建的 TwoSum 函数 - 使用 import "arrays/twosum"

但我一直收到找不到导入的错误。我甚至不确定我做错了什么,我按照这里定义的相同顺序作为示例 - How to Use Go Modules | DigitalOcean


更多关于Golang中无法导入自定义模块的包怎么办的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

首先输入您的项目名称

更多关于Golang中无法导入自定义模块的包怎么办的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go模块中导入自定义包时,需要确保模块声明和导入路径正确。根据你的目录结构,问题可能出现在以下几个方面:

1. 检查go.mod文件

首先确认arrays/go.mod文件的内容:

module arrays

go 1.21

2. 检查twosum包的声明

twosum/twosum.go文件应该正确声明包名:

package twosum

func TwoSum(nums []int, target int) []int {
    // 你的实现代码
    return []int{}
}

3. 正确的导入方式

main.go中应该这样导入:

package main

import (
    "fmt"
    "arrays/twosum"  // 使用模块名/包路径
)

func main() {
    nums := []int{2, 7, 11, 15}
    target := 9
    result := twosum.TwoSum(nums, target)
    fmt.Println(result)
}

4. 常见问题排查

问题1:模块名不匹配

如果模块名不是arrays,需要相应调整导入路径。运行以下命令检查:

cd arrays
cat go.mod

问题2:包名与目录名不一致

确保twosum.go文件中的package twosum与目录名twosum一致。

问题3:未初始化模块

如果没有go.mod文件,需要初始化:

cd arrays
go mod init arrays

问题4:依赖未同步

运行以下命令同步依赖:

cd arrays
go mod tidy

5. 完整示例结构

arrays/
├── go.mod          # module arrays
├── main.go         # package main, import "arrays/twosum"
└── twosum/
    └── twosum.go   # package twosum

如果问题仍然存在,可以分享以下信息进一步诊断:

  • go.mod文件内容
  • twosum.go文件内容
  • 完整的错误信息
  • 运行go env的输出
回到顶部