Структура из той же родительской папки, что и главная, не видна
У меня есть небольшой демонстрационный проект в Гогланде со структурой:
awsomeProject
->src
->awsomeProject
->configuration.go
->main.go
Файл конфигурации имеет простую структуру только для демонстрации:
configuration.go:
package main
type Config struct {
Data int
}
Основной файл просто использует структуру Config:
main.go
package main
import "fmt"
func main(){
var cfg Config
cfg.Data = 1
fmt.Println("lalala")
}
Ошибка, которая у меня есть:
/ usr / local / go / bin / go run /Users/lapetre/Work/awsomeProject/src/awsomeProject/main.go аргументы командной строки src/awsomeProject/main.go:6: undefined: процесс конфигурации завершен с кодом выхода 2
Есть идеи, почему Конфиг не виден в основном?
Спасибо
3 ответа
Когда вы создаете многократно используемые фрагменты кода, вы разрабатываете пакет как разделяемую библиотеку. Но когда вы разрабатываете исполняемые программы, вы будете использовать пакет "main" для создания пакета в качестве исполняемой программы. Пакет "main" сообщает компилятору Go, что пакет должен компилироваться как исполняемая программа, а не как разделяемая библиотека. Основной функцией в пакете "main" будет точка входа нашей исполняемой программы.
Вот почему вы должны использовать следующую структуру:
awsomeProject
->src
->awsomeProject
->configuration.go
->main.go
с main.go
package main
import "fmt"
func main(){
var cfg awsomeProject.Config
cfg.Data = 1
fmt.Println("lalala")
}
и configuration.go
package awsomeProject
type Config struct {
Data int
}
Больше подробностей:
Как ты звонишь иди беги? Если вы называете это как
go run main.go
тогда это проблема.
Go run только запускает файл (ы), вы говорите это. Поэтому вы должны указать ему также запустить файл configuration.go, или, если у вас есть несколько файлов go для запуска, вы можете использовать
go run *.go
как предложил eXMoor.
Однако у "go run *.go" есть некоторые ограничения / недостатки, поэтому лучшей альтернативой является использование go build вместо go run.
go build
Скомпилируем все. Затем, чтобы запустить исполняемый файл:
./awesomeProject
Чтобы объединить все это в одну команду, которая скомпилирует и запустит любое приложение, над которым вы работаете, вы можете использовать:
go build && ./${PWD##*/}
У меня есть псевдоним
gorunapp
просто чтобы было проще.
На самом деле это может и не быть решением проблемы, с которой вы столкнулись, но, надеюсь, вы найдете для нее полезную информацию.
Попробуйте запустить приложение с помощью команды:
go run *.go