gobyexample/examples/command-line-flags/command-line-flags.go
2019-10-12 20:58:18 +03:00

55 lines
2.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// [_Флаги командной строки_](http://en.wikipedia.org/wiki/Command-line_interface#Command-line_option)
// являются распространенным способом задания параметров
// для программ командной строки. Например, в `wc -l` - `-l`
// является флагом командной строки.
package main
// Go предоставляет пакет `flag`, поддерживающий базовый
// парсинг флагов командной строки. Мы будем использовать
// этот пакет для реализации нашего примера программы
// командной строки.
import (
"flag"
"fmt"
)
func main() {
// Основные объявления флагов доступны для строковых,
// целочисленных и логических параметров. Здесь мы
// объявляем строковой флаг `word` со значением по
// умолчанию `"foo"` и кратким описанием. Функция
// `flag.String` возвращает строковый указатель (не
// строковое значение); мы увидим, как использовать
// этот указатель ниже.
wordPtr := flag.String("word", "foo", "a string")
// Объявляем флаги `numb` и `fork`, используя тот же
// подход, что и выше.
numbPtr := flag.Int("numb", 42, "an int")
boolPtr := flag.Bool("fork", false, "a bool")
// Также возможно вызвать метод, который использует
// существующую переменную, объявленную в другом месте
// программы. Обратите внимание, что в данном случае
// необходимо передать указатель.
var svar string
flag.StringVar(&svar, "svar", "bar", "a string var")
// Как только все флаги объявлены, вызовите `flag.Parse()`,
// чтобы выполнить парсинг командной строки.
flag.Parse()
// Здесь мы просто выведем результат парсинга и все
// введеные аргументы. Обратите внимание, что нам
// нужно разыменовать указатели, например, с
// помощью `*wordPtr`, чтобы получить фактические
// значения.
fmt.Println("word:", *wordPtr)
fmt.Println("numb:", *numbPtr)
fmt.Println("fork:", *boolPtr)
fmt.Println("svar:", svar)
fmt.Println("tail:", flag.Args())
}