Golang中如何实现文档间的函数导入

Golang中如何实现文档间的函数导入 早上好,我想知道如何在 main.go 中调用位于不同文档中的函数。

目录结构: groups -----controllers -------usersControllers.go main.go

文件 main.go

package main

import (
	"./groups/controllers"
	"github.com/gorilla/mux"
	"log"
	"net/http"
	"time"
)

终端调试信息:

build command-line-arguments: cannot find module for path /C/Users/YeisonQ/Documents/Yeison/Backup_Yeison/Trabajos/Api_fullrest_scim_go/groups/controllers

感谢您的关注。


更多关于Golang中如何实现文档间的函数导入的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

谢谢,它起作用了。

更多关于Golang中如何实现文档间的函数导入的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我认为,如果你正在使用 Go 模块,那么你的导入路径需要以模块名称开头。例如,如果你的模块名称是 模块 github.com/yeisonqb/cool_application,那么你的导入路径将是 github.com/yeisonqb/cool_application/groups/controllers

如果你没有使用模块,那么你的导入路径将从你的 $GOPATH/src 目录开始。然后你需要向下遍历到你的应用程序的根文件夹。

希望这能有所帮助。

在Go中导入不同文件的函数,需要正确设置模块和包结构。以下是解决方案:

首先确保项目根目录有go.mod文件。如果没有,在项目根目录运行:

go mod init your-module-name

调整目录结构为:

your-project/
├── go.mod
├── main.go
└── groups/
    └── controllers/
        └── usersControllers.go

修改usersControllers.go的包声明和导出函数:

// groups/controllers/usersControllers.go
package controllers  // 包名改为controllers

import "fmt"

// 函数名首字母大写才能被导出
func GetUsers() {
    fmt.Println("获取用户列表")
}

修改main.go的导入路径:

// main.go
package main

import (
    "your-module-name/groups/controllers"  // 使用模块路径
    "github.com/gorilla/mux"
    "log"
    "net/http"
    "time"
)

func main() {
    controllers.GetUsers()  // 调用导出的函数
    
    r := mux.NewRouter()
    // ... 其他代码
}

如果使用相对路径导入,确保在go.mod中正确声明模块名。检查go.mod文件内容:

module your-module-name

go 1.16

require github.com/gorilla/mux v1.8.0

运行以下命令同步依赖:

go mod tidy

然后构建运行:

go run main.go

关键点:

  1. 使用go.mod模块系统
  2. 导出函数首字母必须大写
  3. 导入路径基于模块名,而不是相对路径
  4. 确保包名与目录名一致
回到顶部