Как использовать пользовательские пакеты в 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
, но, похоже, ничего не делает (файл не генерируется, нет сообщения об ошибке). Итак, любая идея, как я могу это сделать?
Ответы
Ответ 1
Во-первых, обязательно прочтите и поймите "Как написать код Go" .
Фактический ответ зависит от характера вашего "пользовательского пакета".
Если он предназначен для общего использования, рассмотрите использование так называемого "Github code layout" . В основном, вы делаете свою библиотеку отдельным go get
-table проектом.
Если ваша библиотека предназначена для внутреннего использования, вы можете сделать следующее:
- Поместите каталог с библиотечными файлами в каталог вашего проекта.
- В остальной части вашего проекта обратитесь к библиотеке, используя ее путь относительно корня вашей рабочей области, содержащей проект.
Чтобы продемонстрировать:
src/
myproject/
mylib/
mylib.go
...
main.go
Теперь, на верхнем уровне main.go
, вы могли бы import "myproject/mylib"
, и он будет работать нормально.
Ответ 2
Для такого типа структуры папок:
main.go
mylib/
mylib.go
Самый простой способ - это:
import (
"./mylib"
)
Ответ 3
Для проекта, размещенного на GitHub, здесь, что обычно делают люди:
github.com/
laike9m/
myproject/
mylib/
mylib.go
...
main.go
mylib.go
package mylib
...
main.go
import "github.com/laike9m/myproject/mylib"
...
Ответ 4
другое решение:
добавьте src/myproject
в $GOPATH.
Затем import "mylib"
будет компилироваться.
Ответ 5
Я опытный программист, но совсем новый в мире Go! И я признаюсь, что столкнулся с несколькими трудностями в понимании 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 things here
}
(Я использую Go 1.9 в Ubuntu 16.04)
И помните, ребята, я новичок на Go. Если то, что я делаю, - плохая практика, дайте мне знать!
Ответ 6
пакет лексико
type Analizador struct {
}
func main() {
}
En la clase
основной пакет
import (
"github.com/user/lexico
)