Импорт локальной библиотеки и файлов в приложении

Я новичок в Go (но не в программировании), мне нравится язык, но у меня есть немного проблем с полным пониманием того, как я должен создавать внутренние библиотеки в приложении через пакеты. Для справки, получение внешних пакетов, а затем импорт / использование их в порядке.

предположим, я делаю заявление A.

/home/me/A/a.go (package main)

тогда я понимаю.пойдите, начните быть довольно большим, поэтому я разрезал его на две части

/home/me/A/a.go (package main)
/home/me/A/b.go (package main)

как я должен импорт / включить b.перейти от a.перейти, чтобы сделать его функцию доступной ?

как продолжение вопроса, В a я манипулирую множеством объектов O, поэтому я считаю, что было бы намного лучше, если бы я просто дал им свой собственный пакет и инкапсулировал функциональные возможности в общедоступном/экспортированном api. Как мне это сделать ?

Я пробовал создать ./lib/o.go (пакет o) и import lib/o но я продолжаю получать ошибки, такие как

./a.go:6: imported and not used: "o"
./a.go:43: undefined: o

у меня нет ГОПАТА в моем env, но я попытался export GOPATH=$GOPATH:/home/me/A и результат не изменился.

Я попытался прочитать статью о "GO layout", но сразу почувствовал себя слишком подавляющим, и мне бы очень понравилось более простое объяснение этого" маленького " шага, который я пытаюсь сделать

спасибо !

GOPATH / src/me/a / a.go:

package main

func main() {
        test()
}

GOPATH / src/me/a / test.go:

package main

import "fmt"

func test() {
        fmt.Println("test func !")
}

Exec:

$ go run a.go 
# command-line-arguments 
./a.go:4: undefined: test

EDIT: получил мой ответ здесь: https://groups.google.com/forum/?fromgroups#!topic/golang-nuts/qysy2bM_o1I

либо список всех файлов в go run (go run a.go test.go) или используйте go build и запустите полученный исполняемый файл.

1 ответов


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

короче говоря, это, wrt go tool, шоу пробки:

  • вы должны имейте действительный, экспортированный GOPATH

  • файлы пакетов с путем импорта "example / foo" должны находится в $GOPATH/src/example/foo справочник.

для получения более подробной информации см. выше связанную статью.