go - 如何修复此导入?

标签 go

main_test.go

package main_test

import (
    "log"
    "os"
    "testing"
    "."
)

func TestMain(m *testing.M) {
    a = main.App{}
    a.Init(
        os.Getenv("TEST_DB_USERNAME"),
        os.Getenv("TEST_DB_PASSWORD"),
        os.Getenv("TEST_DB_NAME"))

    ensureTableExists()
    code := m.Run()
    clearTable()
    os.Exit(code)
}

应用程序去

package main

import (
    "database/sql"
    "fmt"
    "log"

    "github.com/gorilla/mux"
    _ "github.com/lib/pq"
)

type App struct {
    Router *mux.Router
    DB *sql.DB
}

func (a *App) Init(user, password, dbname string) {

    connection := fmt.Sprintf("user=%s password=%s dbname=%s", user, password, dbname)
    var err error
    a.DB, err = sql.Open("postgres", connection)
    if err != nil {
        log.Fatal(err)
    }
    a.Router = mux.NewRouter()

}
func (a *App) Run(addr string) { }

主.go

package main

import "os"

func main() {
    a := App{}
    a.Init(
        os.Getenv("APP_DB_USERNAME"),
        os.Getenv("APP_DB_PASSWORD"),
        os.Getenv("APP_DB_NAME"))
    a.Run(":8080")
}

大家好,我是 Golang 的新手,正在学习一些教程。在本教程中,他们使用导入语句“.”。这对我来说是一个错误。确切的错误是“非规范导入路径”。我尝试使用相对路径和完整路径来访问项目中的主文件,但是当我使用“.”以外的任何其他内容时。 var a.main.App 抛出一个错误,指出 main 是一个未解析的类型。我的 $GOPATH 设置为 c:/users/me/go/src 我的项目位于 src 文件夹中。我不完全确定目前我的代码有什么问题。如果这是显而易见的事情,我深表歉意。

这是我要导入的内容。这存在于一个名为 app.go 的文件中,该文件通过 main.go 调用

type App struct {
    Router *mux.Router
    DB *sql.DB
}

最佳答案

您不需要导入 main 来使用 struct App。您只需将 main_test 的包更改为 main 然后您就可以使用该结构,如下所示,我只是传递了 main_test 文件。

package main

import (
    "os"
    "testing"
)

func TestMain(m *testing.M) {
    a := App{}
    a.Init(
        os.Getenv("TEST_DB_USERNAME"),
        os.Getenv("TEST_DB_PASSWORD"),
        os.Getenv("TEST_DB_NAME"))

    ensureTableExists()
    code := m.Run()
    clearTable()
    os.Exit(code)
}

这是我从执行测试中得到的:

Success: Tests passed.

关于go - 如何修复此导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558656/

相关文章:

go - Go 中的泛型是什么?

macos - 在 OS X 中自动启动 godoc localhost 服务器?

vim - 开发 Golang 命令行的工作流程

go - 如何在go中显示带有pkg/errors的错误行号?

go - 如何将结构 slice 转换为字符串 slice ?

go - 为什么我的交叉编译的 CGO 二进制文件不能在 Raspberry Pi (Raspbian) 上运行?

sql - Golang 中的跨数据库准备语句绑定(bind)(like 和 where in)

html - xml.NewDecoder(resp.Body).Decode给出EOF错误_GOLang

go - 如何添加对象掩码以使用 golang 调用 GetNetworkVlans

google-app-engine - 在 Go 中自动包含来自数据存储的 ID