Go: Импортировать vars/consts из main в subpackage
У меня есть проект Go в $GOPATH/dalu/myproject
со следующими файлами:
main.go
package main
import "dalu/myproject/subpackage"
var GV string = "World"
func main() {
subpackage.Hello()
}
subpackage/subpackage.go
package subpackage
import (
"fmt"
"dalu/myproject"
)
func Hello() {
//? fmt.Println("Hello"+GV)
}
Бонус (если бы я мог):
Я попробовал что-то подобное с большим количеством подпакетов и при попытке импортировать подпакет в основном, который импортирует другой подпакет, который импортирует первый упомянутый подпакет, я получаю "цикл импорта не разрешен"
Ответы
Ответ 1
Как хорошо сказано компилятору, Go не разрешает циклических зависимостей, и в отличие от С++ здесь не нужно делать трюки с профайлами.
если у вас есть состояние, в котором:
A imports B AND B imports A
Это означает, что вам нужно переместить все, что они разделяют между ними, в пакет C
и выполнить:
A imports B, C AND B imports C
и все счастливы!
или в вашем примере добавьте файл с именем dalu/myproject/gv/gv.go
и в нем определите это GV
. Затем импортируйте его как в main
, так и subpackage