cli flags
This commit is contained in:
parent
7d9228f759
commit
e62cee4774
@ -63,7 +63,7 @@ Epoch
|
|||||||
Временные файлы и директории (Temporary Files and Directories)
|
Временные файлы и директории (Temporary Files and Directories)
|
||||||
Тестирование (Testing)
|
Тестирование (Testing)
|
||||||
Аргументы командной строки (Command-Line Arguments)
|
Аргументы командной строки (Command-Line Arguments)
|
||||||
Command-Line Flags
|
Флаги командной строки (Command-Line Flags)
|
||||||
Command-Line Subcommands
|
Command-Line Subcommands
|
||||||
Environment Variables
|
Environment Variables
|
||||||
HTTP Clients
|
HTTP Clients
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
# To experiment with command-line arguments it's best to
|
# Чтобы поэкспериментировать с аргументами командной
|
||||||
# build a binary with `go build` first.
|
# строки, лучше сначала создать двоичный файл с
|
||||||
|
# помощью `go build`.
|
||||||
$ go build command-line-arguments.go
|
$ go build command-line-arguments.go
|
||||||
$ ./command-line-arguments a b c d
|
$ ./command-line-arguments a b c d
|
||||||
[./command-line-arguments a b c d]
|
[./command-line-arguments a b c d]
|
||||||
[a b c d]
|
[a b c d]
|
||||||
c
|
c
|
||||||
|
|
||||||
# Next we'll look at more advanced command-line processing
|
# Далее мы рассмотрим более сложную обработку командной
|
||||||
# with flags.
|
# строки с флагами.
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
// [_Command-line flags_](http://en.wikipedia.org/wiki/Command-line_interface#Command-line_option)
|
// [_Флаги командной строки_](http://en.wikipedia.org/wiki/Command-line_interface#Command-line_option)
|
||||||
// are a common way to specify options for command-line
|
// являются распространенным способом задания параметров
|
||||||
// programs. For example, in `wc -l` the `-l` is a
|
// для программ командной строки. Например, в `wc -l` - `-l`
|
||||||
// command-line flag.
|
// является флагом командной строки.
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
// Go provides a `flag` package supporting basic
|
// Go предоставляет пакет `flag`, поддерживающий базовый
|
||||||
// command-line flag parsing. We'll use this package to
|
// парсинг флагов командной строки. Мы будем использовать
|
||||||
// implement our example command-line program.
|
// этот пакет для реализации нашего примера программы
|
||||||
|
// командной строки.
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
@ -15,34 +16,36 @@ import (
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
// Basic flag declarations are available for string,
|
// Основные объявления флагов доступны для строковых,
|
||||||
// integer, and boolean options. Here we declare a
|
// целочисленных и логических параметров. Здесь мы
|
||||||
// string flag `word` with a default value `"foo"`
|
// объявляем строковой флаг `word` со значением по
|
||||||
// and a short description. This `flag.String` function
|
// умолчанию `"foo"` и кратким описанием. Функция
|
||||||
// returns a string pointer (not a string value);
|
// `flag.String` возвращает строковый указатель (не
|
||||||
// we'll see how to use this pointer below.
|
// строковое значение); мы увидим, как использовать
|
||||||
|
// этот указатель ниже.
|
||||||
wordPtr := flag.String("word", "foo", "a string")
|
wordPtr := flag.String("word", "foo", "a string")
|
||||||
|
|
||||||
// This declares `numb` and `fork` flags, using a
|
// Объявляем флаги `numb` и `fork`, используя тот же
|
||||||
// similar approach to the `word` flag.
|
// подход, что и выше.
|
||||||
numbPtr := flag.Int("numb", 42, "an int")
|
numbPtr := flag.Int("numb", 42, "an int")
|
||||||
boolPtr := flag.Bool("fork", false, "a bool")
|
boolPtr := flag.Bool("fork", false, "a bool")
|
||||||
|
|
||||||
// It's also possible to declare an option that uses an
|
// Также возможно вызвать метод, который использует
|
||||||
// existing var declared elsewhere in the program.
|
// существующую переменную, объявленную в другом месте
|
||||||
// Note that we need to pass in a pointer to the flag
|
// программы. Обратите внимание, что в данном случае
|
||||||
// declaration function.
|
// необходимо передать указатель.
|
||||||
var svar string
|
var svar string
|
||||||
flag.StringVar(&svar, "svar", "bar", "a string var")
|
flag.StringVar(&svar, "svar", "bar", "a string var")
|
||||||
|
|
||||||
// Once all flags are declared, call `flag.Parse()`
|
// Как только все флаги объявлены, вызовите `flag.Parse()`,
|
||||||
// to execute the command-line parsing.
|
// чтобы выполнить парсинг командной строки.
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
// Here we'll just dump out the parsed options and
|
// Здесь мы просто выведем результат парсинга и все
|
||||||
// any trailing positional arguments. Note that we
|
// введеные аргументы. Обратите внимание, что нам
|
||||||
// need to dereference the pointers with e.g. `*wordPtr`
|
// нужно разыменовать указатели, например, с
|
||||||
// to get the actual option values.
|
// помощью `*wordPtr`, чтобы получить фактические
|
||||||
|
// значения.
|
||||||
fmt.Println("word:", *wordPtr)
|
fmt.Println("word:", *wordPtr)
|
||||||
fmt.Println("numb:", *numbPtr)
|
fmt.Println("numb:", *numbPtr)
|
||||||
fmt.Println("fork:", *boolPtr)
|
fmt.Println("fork:", *boolPtr)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# To experiment with the command-line flags program it's
|
# Чтобы поэкспериментировать с программой флагов командной
|
||||||
# best to first compile it and then run the resulting
|
# строки, лучше сначала скомпилировать ее, а затем
|
||||||
# binary directly.
|
# напрямую запустить полученный бинарный файл.
|
||||||
$ go build command-line-flags.go
|
$ go build command-line-flags.go
|
||||||
|
|
||||||
# Try out the built program by first giving it values for
|
# Попробуйте встроенную программу, сначала задав ей
|
||||||
# all flags.
|
# значения для всех флагов.
|
||||||
$ ./command-line-flags -word=opt -numb=7 -fork -svar=flag
|
$ ./command-line-flags -word=opt -numb=7 -fork -svar=flag
|
||||||
word: opt
|
word: opt
|
||||||
numb: 7
|
numb: 7
|
||||||
@ -12,8 +12,8 @@ fork: true
|
|||||||
svar: flag
|
svar: flag
|
||||||
tail: []
|
tail: []
|
||||||
|
|
||||||
# Note that if you omit flags they automatically take
|
# Обратите внимание, что если вы опустите флаги, они
|
||||||
# their default values.
|
# автоматически примут свои значения по умолчанию.
|
||||||
$ ./command-line-flags -word=opt
|
$ ./command-line-flags -word=opt
|
||||||
word: opt
|
word: opt
|
||||||
numb: 42
|
numb: 42
|
||||||
@ -21,16 +21,17 @@ fork: false
|
|||||||
svar: bar
|
svar: bar
|
||||||
tail: []
|
tail: []
|
||||||
|
|
||||||
# Trailing positional arguments can be provided after
|
# Конечные позиционные аргументы могут быть
|
||||||
# any flags.
|
# предоставлены после любых флагов.
|
||||||
$ ./command-line-flags -word=opt a1 a2 a3
|
$ ./command-line-flags -word=opt a1 a2 a3
|
||||||
word: opt
|
word: opt
|
||||||
...
|
...
|
||||||
tail: [a1 a2 a3]
|
tail: [a1 a2 a3]
|
||||||
|
|
||||||
# Note that the `flag` package requires all flags to
|
# Обратите внимание, что пакет `flag` требует, чтобы все
|
||||||
# appear before positional arguments (otherwise the flags
|
# флаги отображались перед позиционными аргументами
|
||||||
# will be interpreted as positional arguments).
|
# (в противном случае флаги будут интерпретироваться
|
||||||
|
# как позиционные аргументы).
|
||||||
$ ./command-line-flags -word=opt a1 a2 a3 -numb=7
|
$ ./command-line-flags -word=opt a1 a2 a3 -numb=7
|
||||||
word: opt
|
word: opt
|
||||||
numb: 42
|
numb: 42
|
||||||
@ -38,8 +39,9 @@ fork: false
|
|||||||
svar: bar
|
svar: bar
|
||||||
tail: [a1 a2 a3 -numb=7]
|
tail: [a1 a2 a3 -numb=7]
|
||||||
|
|
||||||
# Use `-h` or `--help` flags to get automatically
|
# Используйте флаги `-h` или `--help`, чтобы получить
|
||||||
# generated help text for the command-line program.
|
# автоматически сгенерированный текст справки для
|
||||||
|
# программы командной строки.
|
||||||
$ ./command-line-flags -h
|
$ ./command-line-flags -h
|
||||||
Usage of ./command-line-flags:
|
Usage of ./command-line-flags:
|
||||||
-fork=false: a bool
|
-fork=false: a bool
|
||||||
@ -47,9 +49,9 @@ Usage of ./command-line-flags:
|
|||||||
-svar="bar": a string var
|
-svar="bar": a string var
|
||||||
-word="foo": a string
|
-word="foo": a string
|
||||||
|
|
||||||
# If you provide a flag that wasn't specified to the
|
# Если вы укажете флаг, который не был указан для пакета
|
||||||
# `flag` package, the program will print an error message
|
# флагов, программа напечатает сообщение об ошибке
|
||||||
# and show the help text again.
|
# и снова покажет текст справки.
|
||||||
$ ./command-line-flags -wat
|
$ ./command-line-flags -wat
|
||||||
flag provided but not defined: -wat
|
flag provided but not defined: -wat
|
||||||
Usage of ./command-line-flags:
|
Usage of ./command-line-flags:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user