<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答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
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

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

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間: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)庫(kù) flag 是官方自帶的用于命令行參數(shù)解析的實(shí)用庫(kù),而本文介紹的 cli 的主要功能基本與 flag 庫(kù)相同,但是提供相對(duì)簡(jiǎn)潔友好的用法以及更多實(shí)用工具。 cli 的主要特性包括: 基
        推薦度:
        導(dǎo)讀使用go構(gòu)建命令行程序的快捷之道_html/css_WEB-ITnose:摘要 本文介紹用于構(gòu)建命令行程序的開源工具 mkideal/cli 。golang標(biāo)準(zhǔn)庫(kù) flag 是官方自帶的用于命令行參數(shù)解析的實(shí)用庫(kù),而本文介紹的 cli 的主要功能基本與 flag 庫(kù)相同,但是提供相對(duì)簡(jiǎn)潔友好的用法以及更多實(shí)用工具。 cli 的主要特性包括: 基

        摘要

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

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

        入門介紹

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

        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	})}

        編譯運(yùn)行這段代碼

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

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

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

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

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

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

        好了,下面創(chuàng)建一個(gè)實(shí)用一點(diǎn)的程序來(lái)做更詳細(xì)的講解。

        一個(gè)簡(jiǎn)易的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	})}

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

        還是先編譯運(yùn)行一下

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

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

        Hello, this is my http server!

        然后啟動(dòng) 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)在通過(guò)瀏覽器訪問(wèn) 127.0.0.1:8080 就可以看到

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

        可以這樣啟動(dòng)

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

        或者

        $ ./httpd -d html --port 3000

        或者

        $ ./httpd -d html -p=3000

        或者

        $ ./httpd -d html -p 3000

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

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

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

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

        clier 是 mkideal/cli 下的一個(gè)命令行程序,它也是使用 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 # 通過(guò) `-t` 參數(shù)指定程序類型為`http`$ goplus new -t tree demo # 基本的多命令程序

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

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。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)庫(kù) flag 是官方自帶的用于命令行參數(shù)解析的實(shí)用庫(kù),而本文介紹的 cli 的主要功能基本與 flag 庫(kù)相同,但是提供相對(duì)簡(jiǎn)潔友好的用法以及更多實(shí)用工具。 cli 的主要特性包括: 基
        推薦度:
        標(biāo)簽: 快捷鍵 快捷 html
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费人成视频在线观看视频 | 亚洲男人天堂2017| 无码免费又爽又高潮喷水的视频| 女人裸身j部免费视频无遮挡| 性色av无码免费一区二区三区| 亚洲一卡2卡4卡5卡6卡在线99 | 猫咪www免费人成网站| 免费又黄又硬又爽大片| 真人无码作爱免费视频| 亚洲国产精品日韩专区AV| 国产精品美女久久久免费| 亚洲乱码一区二区三区在线观看 | 久久久久久曰本AV免费免费| 亚洲精品在线电影| 国产视频精品免费视频| 综合亚洲伊人午夜网| 国产精品亚洲а∨天堂2021| 全部免费毛片免费播放| 东北美女野外bbwbbw免费| 亚洲国产成人久久综合碰碰动漫3d| 久久www免费人成看片| 在线a亚洲老鸭窝天堂av高清| 国产一级一片免费播放| baoyu116.永久免费视频| 亚洲国产综合专区在线电影 | 九九99热免费最新版| 亚洲国产精品久久久久| 免费无码又黄又爽又刺激| 欧美日韩亚洲精品| 亚洲日产无码中文字幕| 一色屋成人免费精品网站| 国产精品亚洲二区在线| 久久亚洲国产中v天仙www| 免费做爰猛烈吃奶摸视频在线观看| 日本高清免费中文在线看| 77777_亚洲午夜久久多人| 日本一道一区二区免费看| 免费国产99久久久香蕉| 亚洲男人的天堂网站| 伊人久久大香线蕉亚洲| 成年性羞羞视频免费观看无限|