欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言中使用flag包對命令行進行參數(shù)解析的方法

 更新時間:2016年04月21日 17:04:14   作者:leanote  
這篇文章主要介紹了Go語言中使用flag包對命令行進行參數(shù)解析的方法,文中舉了一個實現(xiàn)flag.Value接口來自定義flag的例子,需要的朋友可以參考下

flag
flag 是Go 標(biāo)準(zhǔn)庫提供的解析命令行參數(shù)的包。

使用方式:

flag.Type(name, defValue, usage)

其中Type為String, Int, Bool等;并返回一個相應(yīng)類型的指針。

flag.TypeVar(&flagvar, name, defValue, usage)

將flag綁定到一個變量上。

自定義flag
只要實現(xiàn)flag.Value接口即可:

type Value interface {
  String() string
  Set(string) error
}

通過如下方式定義該flag:

flag.Var(&flagvar, name, usage)

示例

package main
import "flag"
import "fmt"
import "strconv"
type percentage float32
func (p *percentage) Set(s string) error {
  v, err := strconv.ParseFloat(s, 32)
  *p = percentage(v)
  return err
}
func (p *percentage) String() string { return fmt.Sprintf("%f", *p) }
func main() {
  namePtr := flag.String("name", "lyh", "user's name")
  agePtr := flag.Int("age", 22, "user's age")
  vipPtr := flag.Bool("vip", true, "is a vip user")
  var email string
  flag.StringVar(&email, "email", "lyhopq@gmail.com", "user's email")
  var pop percentage
  flag.Var(&pop, "pop", "popularity")
  flag.Parse()
  others := flag.Args()
  fmt.Println("name:", *namePtr)
  fmt.Println("age:", *agePtr)
  fmt.Println("vip:", *vipPtr)
  fmt.Println("pop:", pop)
  fmt.Println("email:", email)
  fmt.Println("other:", others)
}
$ ./command-line-flags
name: lyh
age: 22
vip: true
email: lyhopq@gmail.com
other: []
$ ./command-line-flags -name golang -age 4 -vip=true -pop 99 簡潔 高并發(fā) 等等
name: golang
age: 4
vip: true
pop: 99
email: lyhopq@gmail.com
other: [簡潔 高并發(fā) 等等]
$ ./command-line-flags -h
Usage of ./command-line-flags:
 -age=22: user's age
 -email="lyhopq@gmail.com": user's email
 -name="lyh": user's name
 -pop=0.0: popularity
 -vip=true: is a vip user

相關(guān)文章

  • Go語言使用sqlx操作MySQL

    Go語言使用sqlx操作MySQL

    sqlx 包作為一個擴展庫,它在 database/sql 的基礎(chǔ)上,提供了更高級別的便利,極大地簡化了數(shù)據(jù)庫操作,本文章將介紹如何通過sqlx包來操作 MySQL 數(shù)據(jù)庫,感興趣的可以了解下
    2024-11-11
  • go微服務(wù)PolarisMesh源碼解析服務(wù)端啟動流程

    go微服務(wù)PolarisMesh源碼解析服務(wù)端啟動流程

    這篇文章主要為大家介紹了go微服務(wù)PolarisMesh源碼解析服務(wù)端啟動流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Go語言學(xué)習(xí)筆記之錯誤和異常詳解

    Go語言學(xué)習(xí)筆記之錯誤和異常詳解

    Go語言采用返回值的形式來返回錯誤,這一機制既可以讓開發(fā)者真正理解錯誤處理的含義,也可以大大降低程序的復(fù)雜度,下面這篇文章主要給大家介紹了關(guān)于Go語言學(xué)習(xí)筆記之錯誤和異常的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 深入理解Golang中指針的用途與技巧

    深入理解Golang中指針的用途與技巧

    在 Go 語言中,指針是一種重要的概念,了解和正確使用指非常關(guān)鍵,因此本文小編就來和大家講講Golang 中指針的概念與用法,希望對大家有所幫助
    2023-05-05
  • windows下使用GoLand生成proto文件的方法步驟

    windows下使用GoLand生成proto文件的方法步驟

    本文主要介紹了windows下使用GoLand生成proto文件的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Go語言中內(nèi)建函數(shù)make的使用

    Go語言中內(nèi)建函數(shù)make的使用

    在Go語言編程中,make函數(shù)是一個重要的內(nèi)建函數(shù),它用于創(chuàng)建和初始化切片、映射和通道,握 make 的使用方法,可以幫助我們更高效地管理內(nèi)存和數(shù)據(jù)結(jié)構(gòu)
    2024-09-09
  • 一文詳解golang中的gmp模型

    一文詳解golang中的gmp模型

    這篇文章主要介紹了golang中的gmp模型的誕生、概念及調(diào)度講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Go1.16新特性embed打包靜態(tài)資源文件實現(xiàn)

    Go1.16新特性embed打包靜態(tài)資源文件實現(xiàn)

    這篇文章主要為大家介紹了Go?1.16新特性embed打包靜態(tài)資源文件的實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 深入了解Golang中的Slice底層實現(xiàn)

    深入了解Golang中的Slice底層實現(xiàn)

    本文主要為大家詳細(xì)介紹了Golang中slice的底層實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-02-02
  • Golang中for循環(huán)遍歷避坑指南

    Golang中for循環(huán)遍歷避坑指南

    這篇文章主要為大家詳細(xì)介紹了Golang中for循環(huán)遍歷會出現(xiàn)的一些小坑以及對應(yīng)的解決辦法,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-05-05

最新評論