Как мне исправить этот импорт? - PullRequest
0 голосов
/ 28 сентября 2018

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) { }

main.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
}

1 Ответ

0 голосов
/ 28 сентября 2018

Вам не нужно импортировать 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...