«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу организовать проект Go с библиотекой и CLI в одном каталоге?

Как я могу организовать проект Go с библиотекой и CLI в одном каталоге?

Опубликовано 23 декабря 2024 г.
Просматривать:777

How Can I Organize a Go Project with Both a Library and a CLI in the Same Directory?

Организация кода в проектах с несколькими пакетами

В проектах Go, которым требуется как библиотека, так и интерфейс командной строки (CLI), часто возникает проблема наличия нескольких пакетов в одном каталоге.

Одна из таких структур проекта:

whatever.io/
    myproject/
        main.go
        myproject.go

Пакет main и func main необходимы для запуска выполнения в Go, тогда как для библиотеки требуется отдельный пакет, например пакет myproject. Однако при импорте этого проекта компилятор Go может возразить:

main.go:5:2: found packages myproject (myproject.go) and main (main.go) in $GOPATH/src/whatever.io/myproject

Решение: вложенные пакеты

Чтобы решить эту проблему, поместите оба пакета в новую папку внутри того же каталога, что и main.go. Не забудьте обновить операторы импорта, чтобы они ссылались на новый пакет из вашего $GOPATH.

Например:

whatever.io/
    myproject/
        library/
            myproject.go
        main.go

В main.go импортируйте пакет библиотеки следующим образом:

import "../library/myproject"

Этот подход обеспечивает четкое разделение между библиотеки и интерфейса командной строки, позволяя им находиться в одном каталоге.

Дополнительные примечания

  • Перемещение пакетов в вложенная структура не влияет на функциональность ни одного из пакетов.
  • команды go run и go build можно использовать для тестирования и сборки проекта.
  • Для получения дополнительной информации о пакете обратитесь к предоставленной ссылке. различия между go build file.go и go build.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3