Как использовать пользовательские пакеты в golang?

Я пытаюсь создать и использовать пользовательский пакет в Go. Это, наверное, что-то очень очевидное, но я не могу найти много информации об этом. В принципе, у меня есть эти два файла в одной папке:

mylib.go

package mylib type SomeType struct { } 

main.go

 package main import ( "mylib" ) func main() { } 

Когда я пытаюсь go run main.go , я получаю эту ошибку:

 main.go:4:2: import "mylib": cannot find package 

go build mylib.go я попытался запустить go build mylib.go но, похоже, он ничего не делает (файл не генерируется, нет сообщения об ошибке). Итак, любая идея, как я могу это сделать?

Во-первых, обязательно прочитайте и поймите документ «Как написать код Go» .

Фактический ответ зависит от характера вашего «пользовательского пакета».

Если он предназначен для общего использования, подумайте о том, чтобы использовать так называемый «макет кода Github» . В принципе, вы создаете свою библиотеку для отдельного проекта go get -table.

Если ваша библиотека предназначена для внутреннего использования, вы можете сделать следующее:

  1. Поместите каталог с файлами библиотеки в каталог вашего проекта.
  2. В остальной части вашего проекта обратитесь к библиотеке, используя ее путь относительно корня вашей рабочей области, содержащей проект.

Демонстрировать:

 src/ myproject/ mylib/ mylib.go ... main.go 

Теперь на главном уровне main.go вы можете import "myproject/mylib" и он будет работать нормально.

Для такой структуры папок:

 main.go mylib/ mylib.go 

Самый простой способ – использовать это:

 import ( "./mylib" ) 

другое решение:
Добавьте src/myproject в $ GOPATH.

Затем будет скомпилирован import "mylib" .

Для проекта, размещенного на GitHub, вот что обычно делают люди:

 github.com/ laike9m/ myproject/ mylib/ mylib.go ... main.go 

mylib.go

 package mylib ... 

main.go

 import "github.com/laike9m/myproject/mylib" ... 

Я опытный программист, но, совершенно новый в мире Go! И я признаюсь, что мне пришлось столкнуться с некоторыми трудностями, чтобы понять, Go … Я столкнулся с этой же проблемой при попытке организовать мои файлы в подпапках. Я решил:

GO_Directory (тот, который назначен для $ GOPATH)

 GO_Directory //the one assigned to $GOPATH __MyProject _____ main.go _____ Entites _____ Fiboo // in my case, fiboo is a database name _________ Client.go // in my case, Client is a table name 

В файле MyProject \ Entities \ Fiboo \ Client.go

 package Fiboo type Client struct{ ID int name string } 

в файле MyProject \ main.go

 package main import( Fiboo "./Entity/Fiboo" ) var TableClient Fiboo.Client func main(){ TableClient.ID = 1 TableClient.name = 'Hugo' // do your shit here } 

(Я запускаю Go 1.9 на Ubuntu 16.04)

И помните, ребята, я новичок на Go. Если то, что я делаю, это плохая практика, дайте мне знать!

пакет лексико

 type Analizador struct { } func main() { } 

Основной пакет

 import ( "github.com/user/lexico ) 
  • Найдите версию установленного пакета npm
  • Создайте функцию Oracle, которая возвращает таблицу
  • Когда сетевой пакет TCP будет fragmentирован на уровне приложения?
  • исключение в ошибке инициализации
  • Как создать интеллектуальный пакет Meteor
  • Как установить частный модуль NPM без моего собственного реестра?
  • Jar для Mac OSX App Bundle с приложением
  • Android: Как передать объект Parcelable в цель и использовать getParcelable метод bundle?
  • Импорт двух функций с одинаковым именем с помощью roxygen2
  • Как проверить, установлен ли Facebook Android
  • Запрещено название пакета: java
  • Interesting Posts

    android – установить шрифт на платформу Android без root

    Возможно ли установить конкретный каталог на сервере Linux на локальную машину Windows?

    AppSettings получает значение из файла .config

    Когда использовать reinterpret_cast?

    Как подмножить матрицу в один столбец, сохранить тип данных матрицы, поддерживать имена строк / столбцов?

    Ioc / DI – Почему мне нужно ссылаться на все слои / сборки в приложении ввода?

    Вопрос конфигурации конфигурации WCF в отношении

    Asp.Net MVC: Почему мой взгляд передает NULL модели обратно на мой controller?

    Каков предпочтительный способ доступа к физическим дискам виртуальных машин VMware?

    Как настроить собственные ярлыки для стилей?

    Исключение с использованием HttpRequest.execute (): недопустимое использование SingleClientConnManager: соединение все еще выделено

    Являются ли динамические запросы mysql с sql-экранированием столь же безопасными, как и подготовленные операторы?

    Есть ли способ изменить профиль локальной учетной записи Windows на профиль учетной записи домена?

    UISlider для управления AVAudioPlayer

    Как построить неравенство

    Давайте будем гением компьютера.