main_test.gopackage main_testimport ( "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.gopackage mainimport ( "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 mainimport "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 的新手,正在學(xué)習(xí)一些教程。在本教程中,他們使用導(dǎo)入語(yǔ)句“.”。這對(duì)我來(lái)說(shuō)是一個(gè)錯(cuò)誤。確切的錯(cuò)誤是“非規(guī)范導(dǎo)入路徑”。我嘗試使用相對(duì)路徑和完整路徑來(lái)訪(fǎng)問(wèn)項(xiàng)目中的主文件,但是當(dāng)我使用“.”以外的任何其他內(nèi)容時(shí)。var a.main.App 拋出一個(gè)錯(cuò)誤,指出 main 是一個(gè)未解析的類(lèi)型。我的 $GOPATH 設(shè)置為 c:/users/me/go/src 我的項(xiàng)目位于 src 文件夾中。我不完全確定目前我的代碼有什么問(wèn)題。如果這是顯而易見(jiàn)的事情,我深表歉意。這是我要導(dǎo)入的內(nèi)容。這存在于一個(gè)名為 app.go 的文件中,該文件通過(guò) main.go 調(diào)用type App struct { Router *mux.Router DB *sql.DB}
1 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
您無(wú)需導(dǎo)入 main 即可使用 struct App。您只需將包更改main_test為main然后就可以使用該結(jié)構(gòu),如下所示,我只是傳遞了文件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)
}
這是我從執(zhí)行測(cè)試中得到的:
Success: Tests passed.
- 1 回答
- 0 關(guān)注
- 133 瀏覽
添加回答
舉報(bào)
0/150
提交
取消