Задать вопрос
@spaiki007
Программирую на javascript, python, golang, rust

Как правильно импортировать локальные пакеты?

Ребята всем привет, встал тут у меня вопрос разбивки проекта на папки, обычный сервер, хочу отделить модельки и все остальное. В общем у меня возник вопрос по импорту локального пакета.

Как я когда то делал и это работало.

app
- package
-- package.go
- main.go

в main просто делал вот так и все работало... Там конечно был ньюанс с рекурсивным вызовом пакета, но это так... Но с новой версией так не работает.

package main

import (
        "./package"
)

func main() {
	package.Print("Hello world!")
}


Почитав немного доки, мне че теперь каждый локальный пакет надо как субмодуль в гит пушить? И потом делать весь этот замороч с гитом? Ребята поделитесь опытом кто как делает.

Пример импорта Python
from .app.folder.file import func_name

Пример Javascript
import {ThingA, ThingB, ThingC} from './lib/things';

Пример на Rust
mod include_me;

На Go то почему не так же просто? Это здорово отталкивает...
  • Вопрос задан
  • 1865 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@spaiki007 Автор вопроса
Программирую на javascript, python, golang, rust
Посидев по эспериментировав ответил на свой же вопрос, ссылка на пример структуры приложения вот, и да действительно удобно получается... главный момент это использовать модули и все... Неудобств все таки есть парочка, это именование и тесное сотрудничество с гитом, который может отвалится и придется заморачиваться как то по другому...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@darst
Если проект пишите для себя, то не обязательно его привзывать к github. Можете дать название своего проекта, например, "проект" при инициализации (go mod init) или переименовать в go.mod. Тогда обращаться нужно будет "проект/названиеПакета". Привязывать к github имеет смысл, если пакет делаете для других и будете размещать на сторонних сервисах, тогда полные ссылки помогут избежать потери пакетов. И как писал Александр Павлюк выше, чтобы не потерять используемые сторонние пакеты нужно использовать go mod vendor.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы