2014-02-21 4 views
3

Это вопрос новичка ... Предположим, у меня есть код Go в каталоге (репозиторий, инициированный здесь как root), называемый «myprogram». И я пишу некоторые пакеты, разделенные на несколько подкаталогов.Go, Golang: программа, структура пакета для интерфейса командной строки

Тогда я

хранилище, корневой каталог

MyProgram
----------- package1
----------- package2
----------- упаковке3

Затем в каталоге MyProgram, я буду писать код с основным пакетом для основной программы и основной программой будет вызывать все обновления возрастов, которые определены в поддиректории, как следующее:

main.go

import "github.com/username/package1" 
import "github.com/username/package2" 
import "github.com/username/package3" 

func main() { 
    package1.Function1() 
    .... 
} 

Тогда я могу просто запустить этот код с

$ go run main.go 

я не имею никаких проблем до сих пор. Но что, если эта программа имеет некоторые функции с флагами?

$ go run main.go flag1 flag2 

Это работает, но я хочу, чтобы запустить что-то вроде

$ myprogram 
$ flag1 
.... 
$ flag2 

Поскольку все программы и исходный код будет содержаться под MyProgram каталога, который также название проекта, хранилище

MyProgram
----------- package1
----------- package2
----------- упаковке3

Мы запускаем Vim с командой, что-то вроде этого ...

$ vim 

Итак, как я делаю, моя программа запускается командой , а не go запустить main?

Есть ли хранилище с открытым исходным кодом, на которое я могу ссылаться? Или, пожалуйста, дайте мне знать пакет или документацию для чтения. Я попробовал

go install 

Но не могу заставить его работать, как я и хотел.

Большое спасибо!

+1

Чтобы расширить ответ на @ FuZxxl: 'go run' следует использовать только для быстрой проверки одного файла. Go - это не язык сценариев, поэтому вы должны его компилировать (он работает эффективно и отбрасывает двоичный файл).Когда у вас есть несколько файлов как часть одного пакета (либо 'package main', либо' package mylibrary'), вам нужно будет использовать 'go build'. – elithrar

ответ

2

Использование go build. Это создаст исполняемый файл пакета в текущем каталоге. Вы также можете запустить go build <packagename>, который создает двоичный файл в $GOPATH/bin.

+0

Я всегда смущался, строил и собирал build packagename, так что идите build packagename, это тот, который правильно создает двоичный файл в GOPATH/bin? не идти строить –

+1

да, вы правы. – fuz

Смежные вопросы