Golang中如何导入上级子目录中的本地包

Golang中如何导入上级子目录中的本地包 你好,我在使用 Go 包时遇到了一个问题,也许这里有人可以帮我澄清一下。

我的项目结构如下

image

另外,main.go 文件位于 “content” 文件夹的同一层级。

我该如何将名为 “package acnhapi.go” 的 acnhapi.go 包导入到 bugs.go 文件中?我几乎尝试了所有我能想到的方法,但还是找不到解决办法。

提前感谢。


更多关于Golang中如何导入上级子目录中的本地包的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

太棒了,完美运行,感谢您的建议!

更多关于Golang中如何导入上级子目录中的本地包的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


导入Go包可以这样理解:

你的go.mod文件:

module myawesomemodule

现在,根据你的项目结构,每个导入都可以用这个模块名作为前缀。

main.go

package main

import "myawesomemodule/content/bugs"

func main() {
    bugs.SomeFunc()
}

bugs.go

package bugs

import "myawsomemodule/api"

func SomeFunc() {
    api.CallAPI()
}

以此类推……

如果你还没有使用Go模块,现在就是时候了,可以通过执行 go mod init ${your_module_name} 来开始。这会让你的开发工作轻松很多。

在Golang中导入上级子目录的本地包,需要使用模块路径结合相对路径。根据你的项目结构,假设你的go.mod文件在项目根目录,可以这样操作:

首先确保项目根目录有go.mod文件:

go mod init your-module-name

然后在bugs.go中导入acnhapi包:

package main

import (
    "your-module-name/acnhapi"  // 使用模块路径 + 包目录路径
)

func main() {
    // 使用acnhapi包的功能
    acnhapi.SomeFunction()
}

关键点:

  1. acnhapi.go文件需要声明正确的包名(第一行应该是package acnhapi
  2. acnhapi.go需要放在单独的目录中,Go约定包名与目录名一致
  3. 如果acnhapi目录下有多个.go文件,它们都应该属于同一个包

如果acnhapi目录下只有一个acnhapi.go文件,文件内容示例:

// acnhapi/acnhapi.go
package acnhapi

import "fmt"

func GetData() {
    fmt.Println("Fetching data from ACNH API")
}

bugs.go中调用:

package main

import (
    "fmt"
    "your-module-name/acnhapi"
)

func main() {
    data := acnhapi.GetData()
    fmt.Println("Data received:", data)
}

如果导入仍然失败,检查go.mod中的模块名称是否正确,并确保在项目根目录执行go mod tidy来同步依赖。

回到顶部