2009-11-13 54 views
4

任何人都可以在Go中解釋標誌嗎?去標誌的解釋

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

回答

2

查看http://golang.org/pkg/flag/的完整描述。

爲flag.Bool的參數是(名稱字符串,布爾值,使用字符串)

名稱是尋找參數,值是默認值和 使用說明標誌的目的了-help參數或類似,並顯示與flag.Usage()。

對於更詳細的例子檢查here

2

flag用於解析命令行參數。如果您將「-n」作爲命令行參數傳遞,則omitNewLine將被設置爲true。在教程中對此有更深入的解釋:

導入了標誌包後,第12行創建了一個全局變量來保存echo的-n標誌的值。變量omitNewline具有類型* bool,指向bool的指針。

+0

我真的想知道3個參數是什麼 – Casebash 2009-11-13 03:31:47

2

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 

如果您提供了一個具有指定值的標誌,那麼默認值將通過傳遞一個標誌來覆蓋。