Как импортировать файлы из текущей директории в go - PullRequest
0 голосов
/ 14 октября 2019

Intro

Я пытаюсь импортировать мой EventController.go в мой main.go файл.

Каталог:


├───Controllers
│    └───Event
│        └───EventController.go
├───Models
├───Routes
│
└ Main.go   

Проблема:

import (
    "log"
    "net/http"

    _ "/Controllers/Event/EventController.go" //problem here
)

ошибка: cannot import absolute path

Я прочитал некоторую документацию, но я вижу, что я делаю это правильно, хотя я узнал о $ GOPATH, но я хочу использовать локальный каталог.

Что я делаю не так и что это за ошибка

ПРИМЕЧАНИЕ. Хочу добавить, что я использую Windows как ОС

Спасибо.

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Существует несколько проблем:

  • Пакеты импортируются, а не файлы (как отмечено в других ответах)
  • Абсолютные пути импорта файлов не действительны в качестве состояний ошибки. Приложение может использовать относительные пути импорта файлов (путь начинается с «./») или путь относительно рабочей области Go. См. Команду go doc для получения информации о синтаксисе. Пути импорта относительно рабочей области Go являются предпочтительной формой.
  • Идиоматично использовать строчные имена для пакетов (и соответствующих им каталогов). Имена верблюжьих в вопросе работоспособны, но лучше идти с потоком.

Документ Как написать код Go - хорошее руководство о том, как это сделать,

Вот как реорганизовать код, указанный выше. Это предполагает, что main.go находится в пакете с путем импорта «myapp». Измените этот путь импорта на любой другой.

-- main.go --

package main

import (
    "log"
    _ "myapp/controllers/event"
)

func main() {
    log.Println("hello from main")
}

-- go.mod --

module myapp

-- controllers/event/eventController.go --

package event

import "log"

func init() {
    log.Println("hello from controllers/event")
}

Запустите этот пример на игровой площадке Go .

0 голосов
/ 14 октября 2019

Go поддерживает импорт на уровне пакета. Вы можете импортировать пакет, добавив его в оператор импорта в начале файла.

В вашем случае вы должны сделать что-то вроде этого -

import (
    "log"
    "net/http"

    "Controllers/Event/EventController"
)

Также вы должны удалить первый "/" из имени файла

_ /Controllers/Event/EventController.go" //problem here

, поскольку ваша папка Controllers находится на том же уровне, что и файл Main.go . Вы всегда должны указывать относительный путь в операторах импорта.

Таким образом, вы можете использовать любой файл, указанный в папке EventController .

0 голосов
/ 14 октября 2019

Вы не можете импортировать файл. Вы можете импортировать пакет. Итак, предположим, что вашим основным является пакет "github.com/mypackage", тогда вам следует импортировать "github.com/mypackage/Controllers/Event".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...