<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一篇文章帶你搞定Go語言中flag包使用

          共 2672字,需瀏覽 6分鐘

           ·

          2022-06-10 21:07

          點(diǎn)擊上方“Go語言進(jìn)階學(xué)習(xí)”,進(jìn)行關(guān)注

          回復(fù)“Go語言”即可獲贈從入門到進(jìn)階共10本電子書

          昨夜裙帶解,今朝蟢子飛。

          前言

          Hey,大家好,我是碼農(nóng),星期八,這次來講一下的Go語言中,比較常用的一個包flag包。

          這個包的用途是接收命令行參數(shù)的。

          如果你玩過Mysql,肯定對這個界面很熟悉

          對的,就是干這個用的,接收命令行參數(shù)。


          注意

          這一章所學(xué)的任何代碼,都要編譯成.exe才能跑,禁止右擊 run!!


          os.Args

          其實(shí)Go的os模塊,也帶有這個功能,但是這個功能有點(diǎn)欠缺。

          不能接收像-u root -p 3306這樣指定key的值,只能接收像root 3306這樣的方式。簡單了解一下吧。

          代碼

          func main() {    cmdArgs := os.Args    if len(cmdArgs) > 0 {        for index, value := range cmdArgs {            fmt.Printf("索引:%v,value值:%v\n", index, value)        }}}

          我們通過命令go build -o mysql.exe main.go編譯成一個mysql.exe

          mysql.exe圖

          執(zhí)行結(jié)果

          注:返回的cmdArgs是一個切片,第一個值是自己的文件名,如果不想要自己第一個值,直接切片就好了。

          修改第2行代碼。

          cmdArgs := os.Args[1:]

          執(zhí)行結(jié)果


          flag

          上述的可能也發(fā)現(xiàn)問題了,只能接收簡單的值,不能接收key value這種。

          flag可以做到,flag有只能接收以下幾種類型

          • bool

          • int系列(intint64uintuint64)

          • float系列(floatfloat64)

          • string

          • duration

          注意

          使用flag包,最后要使用flag.Parse()轉(zhuǎn)換一下才能獲取命令行參數(shù)。

          flag.Type()

          話不多說,直接代碼

          func main() {    // 第一個參數(shù)是命令行key,第二個參數(shù)是默認(rèn)是,第三個參數(shù)是 .exe -h 提示    var user = flag.String("user""root""用戶名")    var port = flag.Int("port"3306"端口")    var ip = flag.String("ip""localhost""mysql ip")
          //必須使用flag.Parse()解析一下命令行參數(shù) flag.Parse() //flag.Type返回的是一個指針,必須通過 *變量取值 fmt.Println(*user,*port,*ip)}

          執(zhí)行結(jié)果

          .exe -h結(jié)果圖

          懂了叭,你今天,學(xué)廢了嗎!

          flag.TypeVar()

          上述你可能也發(fā)現(xiàn)了問題,需要用*變量才能取到值,是不是感覺不太方便,那就來看看flag.TypeVar()

          func main() {    //聲明變量用于接收命令行參數(shù)    var user string    var port int    var ip string
          //從命令行掃描參數(shù)賦值到變量 flag.StringVar(&user, "user""root""用戶名") flag.IntVar(&port, "port"3306"端口") flag.StringVar(&ip, "ip""localhost""mysql ip")
          //必須使用flag.Parse()解析一下命令行參數(shù) flag.Parse() //flag.Type返回的是一個指針,必須通過 *變量取值 fmt.Println(user, port, ip)}

          執(zhí)行結(jié)果

          flag其他方法

          flag還有一些其他無關(guān)緊要的方法,了解就好。

          func main() {    //聲明變量用于接收命令行參數(shù)    var user string    var port int    var ip string
          //從命令行掃描參數(shù)賦值到變量 flag.StringVar(&user, "user""root""用戶名") flag.IntVar(&port, "port"3306"端口") flag.StringVar(&ip, "ip""localhost""mysql ip")
          //必須使用flag.Parse()解析一下命令行參數(shù) flag.Parse() //flag.Type返回的是一個指針,必須通過 *變量取值 fmt.Println(user, port, ip) ///////////////// 其他方法 //返回命令行參數(shù)后的其他參數(shù) fmt.Println(flag.Args()) //返回命令行參數(shù)后的其他參數(shù)個數(shù) fmt.Println(flag.NArg()) //返回使用的命令行參數(shù)個數(shù) fmt.Println(flag.NFlag())}

          執(zhí)行結(jié)果


          總結(jié)

          本次章節(jié)主要學(xué)習(xí)的是flag包的使用,flag包主要處理的命令行參數(shù)傳遞問題。

          有了這個我們就能開發(fā)出像mysql那樣的程序。

          flag主要有flag.Typeflag.TypeVar兩種區(qū)別

          • flag.Type出來的變量是指針類型,需要用*變量名才能取值

          • flag.TypeVar出來的變量直接就是標(biāo)準(zhǔn)變量(推薦)

          如果在操作過程中有任何問題,記得下面留言,我們看到會第一時間解決問題。

          我是碼農(nóng)星期八,如果覺得還不錯,記得動手點(diǎn)贊一下哈。感謝你的觀看。

          如果你覺得文章還可以,記得點(diǎn)贊留言支持我們哈。感謝你的閱讀,有問題請記得在下方留言噢~

          想學(xué)習(xí)更多關(guān)于Python的知識,可以參考學(xué)習(xí)網(wǎng)址:http://pdcfighting.com/,點(diǎn)擊閱讀原文,可以直達(dá)噢~

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Go學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群

          萬水千山總是情,點(diǎn)個【在看】行不行

          瀏覽 173
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国免费毛片网络 | 中文字幕在线观看网 | 青青草手机在线免费激情视频欧美精华 | 亚洲爱爱网站 | 色九九色九九色九九 |