Go 如何修复此导入?

Go 如何修复此导入?,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

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)
}
app.go

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) { }
梅因,加油

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")
}
大家好,我是刚来戈朗的新手,正在学习一些教程。在教程中,他们使用了import语句“.”,这给我带来了一个错误。确切的错误是“非规范导入路径”。我尝试使用相对路径和完整路径来访问项目中的主文件,但当我使用“.”以外的任何内容时,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
}

使用struct
App
不需要导入main。您只需将
main\u test
的包更改为
main
,就可以使用该结构,如下所示,我只是通过了
main\u 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.

您试图导入什么?一个名为App的结构,它包含一个mux.Router和一个DB*sql.DB命令。您无法导入“”。在go中,不像在c/c++中那样导入文件,而是导入包。如果您的文件在主包中,则不需要导入语句。好的,这对我来说很有意义。问题是,当我尝试在测试文件中使用该结构时,会出现一个错误,称为“未解析类型”。出于某种原因,它没有意识到这一点@Ullaakuted回答您的问题并添加所有相关代码,我们将帮助您找出问题所在