Объяснение Flags in Go - PullRequest
       26

Объяснение Flags in Go

4 голосов
/ 13 ноября 2009

Может кто-нибудь объяснить флаги в Go?

flag.Parse()
var omitNewline = flag.Bool("n", false, "don't print final newline")

Ответы [ 3 ]

2 голосов
/ 13 ноября 2009

См. http://golang.org/pkg/flag/ для полного описания.

Аргументы для flag.Bool: (строка имени, значение bool, строка использования)

имя является аргументом для поиска, значение является значением по умолчанию и Использование описывает назначение флага для аргумента -help или аналогичного и отображается с помощью flag.Usage ().

Для более подробного примера проверьте здесь

2 голосов
/ 13 июня 2014

flags - это общий способ указать опции для программ командной строки.

package main

import (
  "flag"
  "fmt"
)

var (
  env *string
  port *int
)

// Basic flag declarations are available for string, integer, and boolean options.
func init() {
  env = flag.String("env", "development", "a string")
  port = flag.Int("port", 3000, "an int")
}

func main() {

  // Once all flags are declared, call flag.Parse() to execute the command-line parsing.
  flag.Parse()

  // Here we’ll just dump out the parsed options and any trailing positional 
  // arguments. Note that we need to dereference the points with e.g. *evn to 
  // get the actual option values.
  fmt.Println("env:", *env)
  fmt.Println("port:", *port)

}

Запуск программ:

go run main.go

Попробуйте запустить программу, сначала задав ее без флагов. Обратите внимание, что если вы опустите флаги, они автоматически примут свои значения по умолчанию.

go run command-line-flags.go --env production --port 2000

Если вы укажете флаг с указанным значением, то значение по умолчанию будет перезаписано переданным.

2 голосов
/ 13 ноября 2009

flag используется для разбора аргументов командной строки. Если вы передадите «-n» в качестве аргумента командной строки, для omitNewLine будет установлено значение true. Это немного объясняется в уроке:

Импортировав пакет флага, строка 12 создает глобальную переменную для хранения значения флага -n от echo. Переменная omitNewline имеет тип * bool, указатель на bool.

...