如何在 go-lang 中导入包或如何正确构建包结构?

我在这里有以下文件夹结构


   server

       -main.go

     -cmd

         -config

           -config.go    

           -handlerr.go   

     -handlers

           -handlers.go         

     -pkg 

         -models       

           -models.go  

           -db       

             -db.go

     -router

           -router.go

当我尝试将“模型包”导入 db 包时,它说“无效的导入路径:...”,这个结构我正在跟随书,所以我做错了什么?如何将模型导入 db功能还是我应该替换它们(数据库和模型),有什么建议吗?


慕斯709654
浏览 106回答 2
2回答

HUH函数

以下是填写的问题中的文件。说明了从 db 到模型的导入。我将模块名称设置为“my.example”。更改该名称以满足您的需求。最好选择包括“。”的内容。以避免与标准包冲突。您可以在 Go PlayGround 上运行此代码。如何编写 Go 代码详细解释了所有这些内容。-- main.go --package mainimport (    "my.example/pkg/models/db")func main() {    db.Hello()}-- go.mod --module my.example-- cmd/config/config.go --package config-- cmd/config/handlerr.go --package config-- handlers/handlers.go --package handlers-- pkg/models/models.go --package modelsfunc Hello() string { return "hello from models" }-- pkg/models/db/db.go --package dbimport (    "fmt"    "my.example/pkg/models")func Hello() {    fmt.Println("hello from db and", models.Hello())}-- pkg/router/router.go --package router关于文件的布局:这是在意见的土地上,所以我只是问你一个问题。pkg和中的额外嵌套级别会给cmd您带来什么好处吗?

料青山看我应如是

 正如@maxm 提醒我的那样,使用GOPATH,这是他提到的一个很好的例子。所以,如果我的网络搜索和一个小示例程序是正确的,这几乎就是这里发生的事情。Golang 将本地包视为带有 .go 文件的文件夹,/modules/module.go如果modules.go在package modules第一行有的话。所以,当我们包含一个本地包时,我们实际上是包含一个文件夹。我创建了一个小例子:/project      main.go      /modules          modules.go          /printer              printer.gomain.gopackage mainimport (    "./modules/printer")func main() {    printer.Print()}模块/modules.gopackage modulesimport (    "fmt")func Modules() {    fmt.Println("Modules Package")}模块/打印机/printer.gopackage printerimport (    "../../modules")func Print() {    modules.Modules()}这确实有效!所以,你可以导入一个父模块,你只需要包含文件夹。当然,我们不能有导入周期,Golang 不允许,如果你有这种错误,最好改变你的程序结构。我不是在谈论路径和东西,这只是一个实用的解决方案。所以,聪明的人,请纠正我!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go