<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Go語言庫系列之flag

      背景

      終端(命令行)操作是程序員的必備技能,但是你知道怎么通過golang制作出如下命令嗎?

      $ flag girl -h
      Usage of girl:
        -height int
              身高 (default 140)
      
      $ flag girl --height 170
      恭喜你獲得了身高 170 的女朋友
      

      極速上手

      整個實現非常簡單,只需要5個步驟

      第一步,引庫

      import "flag"
      

      第二步,定義變量

      定義該變量的作用是存儲命令行參數傳來的值

      var height int
      

      第三步,配置命令信息

      main函數或init函數中加入

      flag.IntVar(&height, "height", 140, "身高")
      
      • 第一個參數是定義的變量引用
      • 第二個參數:命令的名稱
      • 第三個參數:命令參數的默認值
      • 第四個參數:命令的用法提示

      第四步,解析參數

      main函數中追加

      flag.Parse()
      

      第五步,打印變量

      main函數中追加

      fmt.Println("恭喜你獲得了身高", height, "的女朋友")
      

      大功告成,感興趣的同學可以自行測試。

      完整代碼

      package main
      
      import (
      	"flag"
      	"fmt"
      )
      
      var height int
      
      func main() {
      	flag.IntVar(&height, "height", 140, "身高")
      	flag.Parse()
      	fmt.Println("恭喜你獲得了身高", height, "的女朋友")
      }
      

      高手進階

      支持多種執行方式

      在終端執行時,以下幾種傳參方式都被支持

      $ girl -height 170
      $ girl --height 170
      $ girl --height=170
      $ girl -height=170
      

      支持多種參數值類型

      目前支持字符串、布爾、整型、浮點、時間等多種類型,完全該所有場景。

      布爾類型支持多種寫法

      雖然布爾只有truefalse,但寫法卻可以各種變種,非常騷氣,支持的寫法有

      1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False
      

      隱式處理接收的參數值

      如果我要悄悄地把傳入身高減去5厘米怎么辦?

      第一步,定義一個height類型

      type height int
      

      第二步,實現flag.Value接口的兩個方法

      func (h *height) String() string {
      	return fmt.Sprint(*h)
      }
      
      func (h *height) Set(value string) error {
      	valueInt, _ := strconv.Atoi(value)
      	*h = height(valueInt - 5)
      	return nil
      }
      

      String方法用于格式化值,Set方法用于處理變量設置時候的邏輯。

      第三步,定義height類型變量

      var heightFlag height
      

      第四步,主函數配置及解析

      func main() {
      	flag.Var(&heightFlag, "height", "身高")
      	flag.Parse()
      	fmt.Println(heightFlag)
      }
      

      代碼與極速上手中的主函數內容大致相同,只是調用了flag.Var方法,該方法不需要傳入默認值。


      感謝大家的觀看,如果覺得文章對你有所幫助,歡迎關注公眾號「平也」,聚焦Go語言與技術原理。
      關注我

      posted @ 2020-04-02 11:31  MARIOOW  閱讀(418)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久99精品国产99久久6尤物| 色偷偷www.8888在线观看| 国产丝袜在线精品丝袜| 国内久久人妻风流av免费| 欧美大片va欧美在线播放| 99精品视频在线观看免费蜜桃 | 国产精品成人午夜久久| 国产人妻精品午夜福利免费| 日韩人妻系列无码专区| 98久久人妻少妇激情啪啪| 久久精品夜夜夜夜夜久久| 日韩精品一区二区三区中文无码| 欧美日产国产精品| 国产无遮挡性视频免费看| 鸡西市| 天堂网亚洲综合在线| 国产69精品久久久久99尤物| 亚洲丶国产丶欧美一区二区三区 | 免费高潮了好湿h视频| 日韩精品一区二区蜜臀av| 日韩av在线一卡二卡三卡| 潮喷无码正在播放| 日本一区午夜艳熟免费| 白嫩少妇激情无码| 成人亚欧欧美激情在线观看| 国产一区二区三区的视频| 国产欧美va欧美va在线| 亚洲精品入口一区二区乱| 色综合中文字幕色综合激情| 亚洲欧美在线看片AI| 亚洲三级香港三级久久| 97久久精品人人澡人人爽| 国产稚嫩高中生呻吟激情在线视频| 国产成人黄色自拍小视频| 亚洲国产精品男人的天堂| 日韩一区二区三区日韩精品| 久久亚洲国产品一区二区| 欧美一本大道香蕉综合视频| 凸凹人妻人人澡人人添| 伊人激情一区二区三区av| 成人看的污污超级黄网站免费 |