• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 16:26:55
    文檔

    使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose

    使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose:摘要 本文介紹用于構(gòu)建命令行程序的開源工具 mkideal/cli 。golang標(biāo)準(zhǔn)庫 flag 是官方自帶的用于命令行參數(shù)解析的實用庫,而本文介紹的 cli 的主要功能基本與 flag 庫相同,但是提供相對簡潔友好的用法以及更多實用工具。 cli 的主要特性包括: 基
    推薦度:
    導(dǎo)讀使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose:摘要 本文介紹用于構(gòu)建命令行程序的開源工具 mkideal/cli 。golang標(biāo)準(zhǔn)庫 flag 是官方自帶的用于命令行參數(shù)解析的實用庫,而本文介紹的 cli 的主要功能基本與 flag 庫相同,但是提供相對簡潔友好的用法以及更多實用工具。 cli 的主要特性包括: 基

    摘要

    本文介紹用于構(gòu)建命令行程序的開源工具 mkideal/cli 。golang標(biāo)準(zhǔn)庫 flag 是官方自帶的用于命令行參數(shù)解析的實用庫,而本文介紹的 cli 的主要功能基本與 flag 庫相同,但是提供相對簡潔友好的用法以及更多實用工具。 cli 的主要特性包括:

  • 基于golang的tag和反射實現(xiàn)。
  • 參數(shù)類型和范圍檢查,以及自定義的驗證函數(shù)。
  • 支持短格式和長格式的flag像 -h 和 --help 。
  • 支持指定默認(rèn)值,甚至是以環(huán)境變量為默認(rèn)值。
  • 支持?jǐn)?shù)組和map為參數(shù)。
  • 友好的幫助顯示。
  • ……
  • cli 開源在github上 https://github.com/mkideal/cli

    入門介紹

    命令行程序雖然沒有華麗的界面,但是在服務(wù)器端,命令行程序是不可或缺的,而且在很多時候比圖形界面更加好用。在unix/linux操作系統(tǒng)上命令行程序極其常見,系統(tǒng)上預(yù)裝大量程序。 cli 這個工具正是用來便捷構(gòu)建這種命令行程序的go語言庫。 先看一個簡單的示例:

    package mainimport (	"github.com/mkideal/cli")type argT struct {	cli.Helper}func main() {	cli.Run(&argT{}, func(ctx *cli.Context) error {	argv := ctx.Argv().(*argT)	if argv.Help {	ctx.WriteUsage()	} else {	ctx.String("hello\n")	}	return nil	})}

    編譯運行這段代碼

    $ go build -o app$ ./apphello$ ./app -hOptions: -h, --help display help

    當(dāng)然這段代碼沒有任何實質(zhì)功能。代碼第12行調(diào)用 cli 的 Run 函數(shù),函數(shù)原型如下:

    func Run(argv interface{}, fn func(*Context) error, descs ...string)

    參數(shù) argv 在執(zhí)行時會通過解析命令行參數(shù)來賦值,然后塞進(jìn) Context 對象,最終傳遞給回調(diào)函數(shù) fn 。在回調(diào)函數(shù)中通過 ctx.Argv() 獲得 argv 。

    本示例代碼的 argT 繼承于 cli.Helper ,它的定義如下:

    type Helper struct { Help bool `cli:"!h,help" usage:"display help"`}

    好了,下面創(chuàng)建一個實用一點的程序來做更詳細(xì)的講解。

    一個簡易的http服務(wù)器

    package mainimport (	"fmt"	"net/http"	"github.com/mkideal/cli")type argT struct {	cli.Helper	Host string `cli:"H,host" usage:"specify host" dft:"0.0.0.0"`	Port uint16 `cli:"p,port" usage:"specify port" dft:"8080"`	Dir string `cli:"d,dir" usage:"static files directory" dft:"./"`}func main() {	cli.SetUsageStyle(cli.ManualStyle)	cli.Run(new(argT), func(ctx *cli.Context) error {	argv := ctx.Argv().(*argT)	if argv.Help {	ctx.WriteUsage()	return nil	}	http.Handle("/", http.FileServer(http.Dir(argv.Dir)))	addr := fmt.Sprintf("%s:%d", argv.Host, argv.Port)	ctx.String("listening on %s\n", addr)	http.ListenAndServe(addr, nil)	return nil	})}

    在這個例子里,參數(shù)對象 argT 多了幾個有用的字段: Host Port Dir

    還是先編譯運行一下

    $ go build -o httpd$ ./httpd -h

    好了,現(xiàn)在創(chuàng)建一個 html 目錄,然后新建一個文件 index.html ,內(nèi)容為

    Hello, this is my http server!

    然后啟動 http server

    $ mkdir html$ echo "

    Hello, this is my http server!

    " > html/index.html$ ./httpd -d htmllistening on 0.0.0.0:8080

    現(xiàn)在通過瀏覽器訪問 127.0.0.1:8080 就可以看到

    你還可以指定別的端口,而非默認(rèn)的端口8080,比如指定端口為3000

    可以這樣啟動

    $ ./httpd -d html --port=3000

    或者

    $ ./httpd -d html --port 3000

    或者

    $ ./httpd -d html -p=3000

    或者

    $ ./httpd -d html -p 3000

    接下來講述一下出現(xiàn)在參數(shù)定義中的標(biāo)簽,它們是解析參數(shù)以及顯示幫助時器關(guān)鍵作用的因素。

    標(biāo)簽cli,usage,dft

    cli 支持4個標(biāo)簽

  • cli - 參數(shù)flag名,如示例中的 cli:"h,help" cli:"H,host" 等
  • usage - 參數(shù)使用描述,是會顯示在幫助中的文本
  • dft - 指定參數(shù)默認(rèn)值,可以指定環(huán)境變量為默認(rèn)值,比如這樣 dft:"$HOME"
  • name - 參數(shù)引用名,并無實質(zhì)功能
  • 創(chuàng)建命令行程序的命令行工具 clier goplus

    clier 是 mkideal/cli 下的一個命令行程序,它也是使用 cli 構(gòu)建的。 clier 用于創(chuàng)建一條命令,比如這樣

    $ clier hello$ clier -s "this is hello command's description" hello

    goplus 的 new 子命令可以構(gòu)建完整的基于 cli 的命令行程序。使用示例

    $ goplus new hello # 最基本的單命令程序$ goplus new -t http httpd # 通過 `-t` 參數(shù)指定程序類型為`http`$ goplus new -t tree demo # 基本的多命令程序

    本文只是一個 cli 的簡要介紹。下面幾篇是關(guān)于 cli 的更詳細(xì)的介紹

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose

    使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose:摘要 本文介紹用于構(gòu)建命令行程序的開源工具 mkideal/cli 。golang標(biāo)準(zhǔn)庫 flag 是官方自帶的用于命令行參數(shù)解析的實用庫,而本文介紹的 cli 的主要功能基本與 flag 庫相同,但是提供相對簡潔友好的用法以及更多實用工具。 cli 的主要特性包括: 基
    推薦度:
    標(biāo)簽: 快捷鍵 快捷 html
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久亚洲欧美国产精品| 99精品一区二区三区无码吞精| 最新精品国偷自产在线| 午夜精品福利视频| 国内精品伊人久久久久av一坑| 久久精品国产亚洲AV不卡| 午夜精品视频在线| 99久久99这里只有免费费精品| 最新国产精品拍自在线观看| 精品欧美一区二区在线观看| 欧洲精品视频在线观看| 国产精品无码无需播放器| 少妇人妻无码精品视频| 亚洲国产精品13p| 精品国产福利尤物免费| 欧美亚洲国产精品久久蜜芽| 99精品国产丝袜在线拍国语| 日韩精品专区AV无码| 亚洲人成电影网站国产精品| 久久精品这里只有精99品| 国产精品无码素人福利不卡| 99久久精品国产毛片| 日本一区二区三区精品中文字幕| 91老司机深夜福利精品视频在线观看 | 亚洲精品和日本精品| 免费看污污的网站欧美国产精品不卡在线观看 | 国产成人亚洲综合无码精品| 日韩精品无码一区二区三区免费| 亚洲日韩国产AV无码无码精品| 无夜精品久久久久久| 亚洲国产人成精品| 亚洲精品卡2卡3卡4卡5卡区| 青娱乐国产精品视频| 久久久久亚洲精品无码网址| 久久精品亚洲欧美日韩久久| 亚洲av无码国产精品色在线看不卡 | 精品人妻少妇一区二区三区| 国产精品第一区第27页| 国产成人精品综合在线观看| 国产午夜精品理论片久久| 精品第一国产综合精品蜜芽|