真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言如何打開本地網(wǎng)頁(yè) go語(yǔ)言如何打開本地網(wǎng)頁(yè)文件

「測(cè)試開發(fā)全?;?Go」(1) Go語(yǔ)言基本了解

作為一個(gè)測(cè)試,作為一個(gè)測(cè)試開發(fā), 全?;?管理 是我們未來(lái)的發(fā)展方向。已經(jīng)掌握了Java、Python、HTML的你,是不是也想了解下最近異常火爆的Go語(yǔ)言呢?來(lái)吧,讓我們一起了解下。

10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有凱里免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

Go 是一個(gè)開源的編程語(yǔ)言 ,它能讓構(gòu)造簡(jiǎn)單、可靠且高效的軟件變得容易。

Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來(lái)還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時(shí)候發(fā)布了Go 1穩(wěn)定版本?,F(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個(gè)活躍的社區(qū)。這三個(gè)人都是計(jì)算機(jī)界的大神,有的參與了C語(yǔ)言的編寫,有的還是數(shù)學(xué)大神,有的還獲得了計(jì)算機(jī)最高榮譽(yù)-圖靈獎(jiǎng)。

接下來(lái)說(shuō)說(shuō) Go語(yǔ)言的特色 :

簡(jiǎn)潔、快速、安全

并行、有趣、開源

內(nèi)存管理、數(shù)組安全、編譯迅速

Go語(yǔ)言的用途 :

Go 語(yǔ)言被設(shè)計(jì)成一門應(yīng)用于搭載 Web 服務(wù)器,存儲(chǔ)集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語(yǔ)言。

對(duì)于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語(yǔ)言無(wú)疑比大多數(shù)其它語(yǔ)言有著更高的開發(fā)效率。它提供了海量并行的支持,這對(duì)于 游戲 服務(wù)端的開發(fā)而言是再好不過(guò)了。

Go語(yǔ)言的環(huán)境安裝:

建議直接打開 官方地址因?yàn)閴Φ脑虼虿婚_

因?yàn)槲矣玫氖莣indows系統(tǒng),這里主要講下Windows系統(tǒng)上使用Go語(yǔ)言來(lái)編程。

Windows 下可以使用 .msi 后綴(在下載列表中可以找到該文件,如go1.17.2.windows-amd64.msi)的安裝包來(lái)安裝。

默認(rèn)情況下 .msi 文件會(huì)安裝在 c:Go 目錄下。你可以將 c:Gobin 目錄添加到 Path 環(huán)境變量中。添加后你需要重啟命令窗口才能生效。個(gè)人建議還是安裝到 Program Files文件夾中。

使用什么開發(fā)工具來(lái)對(duì)Go語(yǔ)言進(jìn)行編寫:

個(gè)人建議用VS code, 也可以用Sublime Text來(lái)編輯。如果你之前看了我講的HTML語(yǔ)言的學(xué)習(xí),肯定已經(jīng)下載了VS code. 那么這時(shí)你需要在VS code中下載Go語(yǔ)言的擴(kuò)展插件。

這里有一個(gè)巨大的坑,就是在下載Go的插件和依賴包時(shí),會(huì)提示一些包沒(méi)有。主要是因?yàn)橄螺d的依賴包部分被墻了,只能想別的辦法去下載。

建議參考網(wǎng)頁(yè):

解決vscode中g(shù)olang插件安裝失敗方法

在學(xué)習(xí)go的過(guò)程中,使用的是vscode,但是一直提示安裝相關(guān)插件失敗,然后上網(wǎng)查方法,基本上是叫你建立golang.org目錄什么的,結(jié)果全是錯(cuò)的,而且都是抄襲,很煩。無(wú)意之中看到一位博主分享的方法,他也是飽受上述的垃圾博文困擾,然后找到了解決方法,這里向他致敬,秉著讓更多人看到正確解決方法的心,我寫下正確的解決方法,希望對(duì)你有所幫助,也可以點(diǎn)開原博主鏈接參考:

Go有一個(gè)全球模塊代理,設(shè)置代理再去安裝golang的插件,就可以安裝成功了。步驟有,首先Windows用戶打開Powershell,一個(gè)藍(lán)色的界面,注意不是cmd!不知道的直接打開window下面的搜索,然后輸入powershell,搜索出來(lái)就可以了。

$env:GO111MODULE=“on”

$env:GOPROXY=“”

go env -w GOPROXY=

go env -w GOPRIVATE=*.corp.example.com

然后我們打開VsCode界面,下面會(huì)提示安裝插件,我們選擇Install ALL,就會(huì)安裝成功

當(dāng)你在運(yùn)行Go語(yǔ)言程序時(shí),提示所有的插件包都已經(jīng)安裝成功了時(shí),就可以正常使用了,要不然一堆報(bào)錯(cuò)會(huì)讓你非常心煩。

好了,今天先到這里,晚安、下班~

dot.tk按Go怎么打不開網(wǎng)頁(yè)是不是關(guān)閉注冊(cè)了??

一、網(wǎng)絡(luò)設(shè)置的問(wèn)題 這種原因比較多出現(xiàn)在需要手動(dòng)指定IP、網(wǎng)關(guān)、DNS服務(wù)器聯(lián)網(wǎng)方式下,及使用代理服務(wù)器上網(wǎng)的。仔細(xì)檢查計(jì)算機(jī)的網(wǎng)絡(luò)設(shè)置。 二、DNS服務(wù)器的問(wèn)題 當(dāng)IE無(wú)法瀏覽網(wǎng)頁(yè)時(shí),可先嘗試用IP地址來(lái)訪問(wèn),如果可以訪問(wèn),那么應(yīng)該是DNS的問(wèn)題,造成DNS的問(wèn)題可能是連網(wǎng)時(shí)獲取DNS出錯(cuò)或DNS服務(wù)器本身問(wèn)題,這時(shí)你可以手動(dòng)指定DNS服務(wù)(地址可以是你當(dāng)?shù)豂SP提供的DNS服務(wù)器地址,也可以用其它地方可正常使用DNS服務(wù)器地址。)在網(wǎng)絡(luò)的屬性里進(jìn)行,(控制面板—網(wǎng)絡(luò)和拔號(hào)連接—本地連接—右鍵屬性—TCP/IP協(xié)議—屬性—使用下面的DNS服務(wù)器地址)。不同的ISP有不同的DNS地址。有時(shí)候則是路由器或網(wǎng)卡的問(wèn)題,無(wú)法與ISP的DNS服務(wù)連接,這種情況的話,可把路由器關(guān)一會(huì)再開,或者重新設(shè)置路由器。 還有一種可能,是本地DNS緩存出現(xiàn)了問(wèn)題。為了提高網(wǎng)站訪問(wèn)速度,系統(tǒng)會(huì)自動(dòng)將已經(jīng)訪問(wèn)過(guò)并獲取IP地址的網(wǎng)站存入本地的DNS緩存里,一旦再對(duì)這個(gè)網(wǎng)站進(jìn)行訪問(wèn),則不再通過(guò)DNS服務(wù)器而直接從本地DNS緩存取出該網(wǎng)站的IP地址進(jìn)行訪問(wèn)。所以,如果本地DNS緩存出現(xiàn)了問(wèn)題,會(huì)導(dǎo)致網(wǎng)站無(wú)法訪問(wèn)??梢栽凇斑\(yùn)行”中執(zhí)行ipconfig /flushdns來(lái)重建本地DNS緩存。 三、IE瀏覽器本身的問(wèn)題 當(dāng)IE瀏覽器本身出現(xiàn)故障時(shí),自然會(huì)影響到瀏覽了;或者IE被惡意修改破壞也會(huì)導(dǎo)致無(wú)法瀏覽網(wǎng)頁(yè)。這時(shí)可以嘗試用“黃山IE修復(fù)專家”來(lái)修復(fù)(建議到安全模式下修復(fù)),或者重新IE(如重裝IE遇到無(wú)法重新的問(wèn)題,可參考:附一解決無(wú)法重裝IE) 四、網(wǎng)絡(luò)防火墻的問(wèn)題 如果網(wǎng)絡(luò)防火墻設(shè)置不當(dāng),如安全等級(jí)過(guò)高、不小心把IE放進(jìn)了阻止訪問(wèn)列表、錯(cuò)誤的防火墻策略等,可嘗試檢查策略、降低防火墻安全等級(jí)或直接關(guān)掉試試是否恢復(fù)正常。 五、網(wǎng)絡(luò)協(xié)議和網(wǎng)卡驅(qū)動(dòng)的問(wèn)題 IE無(wú)法瀏覽,有可能是網(wǎng)絡(luò)協(xié)議(特別是TCP/IP協(xié)議)或網(wǎng)卡驅(qū)動(dòng)損壞導(dǎo)致,可嘗試重新網(wǎng)卡驅(qū)動(dòng)和網(wǎng)絡(luò)協(xié)議。 六、HOSTS文件的問(wèn)題 HOSTS文件被修改,也會(huì)導(dǎo)致瀏覽的不正常,解決方法當(dāng)然是清空HOSTS文件里的內(nèi)容。 七、系統(tǒng)文件的問(wèn)題 當(dāng)與IE有關(guān)的系統(tǒng)文件被更換或損壞時(shí),會(huì)影響到IE正常的使用,這時(shí)可使用SFC命令修復(fù)一下,WIN98系統(tǒng)可在“運(yùn)行”中執(zhí)行SFC,然后執(zhí)行掃描;WIN2000/XP/2003則在“運(yùn)行”中執(zhí)行sfc /scannow嘗試修復(fù)。 其中當(dāng)只有IE無(wú)法瀏覽網(wǎng)頁(yè),而可以上時(shí),則往往由于winsock.dll、wsock32.dll或wsock.vxd(VXD只在WIN9X系統(tǒng)下存在)等文件損壞或丟失造成,Winsock是構(gòu)成TCP/IP協(xié)議的重要組成部分,一般要重裝TCP/IP協(xié)議。但xp開始集成TCP/IP協(xié)議,所以不能像98那樣簡(jiǎn)單卸載后重裝,可以使用 netsh 命令重置 TCP/IP協(xié)議,使其恢復(fù)到初次安裝操作系統(tǒng)時(shí)的狀態(tài)。具體操作如下: 點(diǎn)擊“開始 運(yùn)行”,在運(yùn)行對(duì)話框中輸入“CMD”命令,彈出命令提示符窗口,接著輸入“netsh int ip reset c:\resetlog.txt”命令后會(huì)回車即可,其中“resetlog.txt”文件是用來(lái)記錄命令執(zhí)行結(jié)果的日志文件,該參數(shù)選項(xiàng)必須指定,這里指定的日志文件的完整路徑是“c:\resetlog.txt”。執(zhí)行此命令后的結(jié)果與刪除并重新安裝 TCP/IP 協(xié)議的效果相同。 小提示:netsh命令是一個(gè)基于命令行的腳本編寫工具,你可以使用此命令配置和監(jiān)視Windows 系統(tǒng),此外它還提供了交互式網(wǎng)絡(luò)外殼程序接口,netsh命令的使用格式請(qǐng)參看幫助文件(在令提示符窗口中輸入“netsh/?”即可)。 第二個(gè)解決方法是修復(fù)以上文件,WIN9X使用SFC重新提取以上文件,WIN2000/XP/2003使用sfc /scannow命令修復(fù)文件,當(dāng)用sfc /scannow無(wú)法修復(fù)時(shí),可試試網(wǎng)上發(fā)布的專門針對(duì)這個(gè)問(wèn)題的修復(fù)工具WinSockFix,可以在網(wǎng)上搜索下載。 八、殺毒軟件的實(shí)時(shí)監(jiān)控問(wèn)題 這倒不是經(jīng)常見(jiàn),但有時(shí)的確跟實(shí)時(shí)監(jiān)控有關(guān),因?yàn)楝F(xiàn)在殺毒軟件的實(shí)時(shí)監(jiān)控都添加了對(duì)網(wǎng)頁(yè)內(nèi)容的監(jiān)控。舉一個(gè)實(shí)例:KV2005就會(huì)在個(gè)別的機(jī)子上會(huì)導(dǎo)致IE無(wú)法瀏覽網(wǎng)頁(yè)(不少朋友遇到過(guò)),其具體表現(xiàn)是只要打開網(wǎng)頁(yè)監(jiān)控,一開機(jī)上網(wǎng)大約20來(lái)分鐘后,IE就會(huì)無(wú)法瀏覽網(wǎng)頁(yè)了,這時(shí)如果把KV2005的網(wǎng)頁(yè)監(jiān)控關(guān)掉,就一切恢復(fù)正常;經(jīng)過(guò)徹底地重裝KV2005也無(wú)法解決。雖然并不是安裝KV2005的每臺(tái)機(jī)子都會(huì)出現(xiàn)這種問(wèn)題,畢竟每臺(tái)機(jī)子的系統(tǒng)有差異,安裝的程序也不一樣。但如果出現(xiàn)IE無(wú)法瀏覽網(wǎng)頁(yè)時(shí),也要注意檢查一下殺毒軟件。 九、感染了病毒所致 這種情況往往表現(xiàn)在打開IE時(shí),在IE界面的左下框里提示:正在打開網(wǎng)頁(yè),但老半天沒(méi)響應(yīng)。在任務(wù)管理器里查看進(jìn)程,(進(jìn)入方法,把鼠標(biāo)放在任務(wù)欄上,按右鍵—任務(wù)管理器—進(jìn)程)看看CPU的占用率如何,如果是100%,可以肯定,是感染了病毒,這時(shí)你想運(yùn)行其他程序簡(jiǎn)直就是受罪。這就要查查是哪個(gè)進(jìn)程貪婪地占用了CPU資源.找到后,最好把名稱記錄下來(lái),然后點(diǎn)擊結(jié)束,如果不能結(jié)束,則要啟動(dòng)到安全模式下把該東東刪除,還要進(jìn)入注冊(cè)表里,(方法:開始—運(yùn)行,輸入regedit)在注冊(cè)表對(duì)話框里,點(diǎn)編輯—查找,輸入那個(gè)程序名,找到后,點(diǎn)鼠標(biāo)右鍵刪除,然后再進(jìn)行幾次的搜索,往往能徹底刪除干凈。 有很多的病毒,殺毒軟件無(wú)能為力時(shí),唯一的方法就是手動(dòng)刪除。 十一、無(wú)法打開二級(jí)鏈接 還有一種現(xiàn)象也需特別留意:就是能打開網(wǎng)站的首頁(yè),但不能打開二級(jí)鏈接,如果是這樣,處理的方法是重新注冊(cè)如下的DLL文件: 在開始—運(yùn)行里輸入: regsvr32 Shdocvw.dll regsvr32 Shell32.dll(注意這個(gè)命令,先不用輸) regsvr32 Oleaut32.dll regsvr32 Actxprxy.dll regsvr32 Mshtml.dll regsvr32 Urlmon.dll regsvr32 Msjava.dll regsvr32 Browseui.dll 注意:每輸入一條,按回車。第二個(gè)命令可以先不用輸,輸完這些命令后重新啟動(dòng)windows,如果發(fā)現(xiàn)無(wú)效,再重新輸入一遍,這次輸入第二個(gè)命令。

81.go + vue實(shí)現(xiàn)web應(yīng)用程序

前端框架越來(lái)越豐富,前后端分離已經(jīng)是大多數(shù)軟件團(tuán)隊(duì)采取的模式了。vue使用的場(chǎng)景也越來(lái)越多。

go本來(lái)使用template模板來(lái)進(jìn)行前端的表現(xiàn),現(xiàn)在可以用vue來(lái)分擔(dān)很大一部分工作了。

通常直接使用go語(yǔ)言寫后端,然后使用靜態(tài)模板加載渲染前端,前端獲取后端提供的數(shù)據(jù)是使用{{ }}符號(hào),2個(gè)套在一起的花括號(hào)。這個(gè)也是vue使用的數(shù)據(jù)表現(xiàn)方式。

如果go+vue來(lái)協(xié)同工作的話,需要對(duì)vue進(jìn)行一點(diǎn)設(shè)置。比如把{{ }}的方式改為[[ ]]的方式。

首先我們要知道,vue的使用,需要在頁(yè)面中加載vue.js或vue.min.js

純靜態(tài)網(wǎng)頁(yè)使用vue是這樣的(給個(gè)html例子)

然后我們實(shí)現(xiàn)一個(gè)go的簡(jiǎn)單web服務(wù)和模板頁(yè)面

這個(gè)go服務(wù)器通過(guò)端口 1989 展示服務(wù)器頁(yè)面,提供了一個(gè)靜態(tài)文件路徑 htmlpage,我們把vue.js和index.html文件都放置在htmlpage路徑里。

go服務(wù)器還用模板給前臺(tái)頁(yè)面提供了一個(gè)News結(jié)構(gòu)的數(shù)據(jù),數(shù)據(jù)包括:Title,Content,Author的值。

在index.html頁(yè)面中,加載vue.js的時(shí)候需要帶上靜態(tài)路徑 htmlpage

在 new 一個(gè) vue 變量的時(shí)候,必須有一句來(lái)設(shè)置包裹數(shù)據(jù)的符號(hào),我們這里設(shè)置這個(gè)符號(hào)為[[ ]]

同時(shí),所有需要由 vue 渲染的數(shù)據(jù),都寫成類似這樣的樣子

在 go + vue 方式下的完整模板文件 index.html

此頁(yè)面中{{ }}包裹的數(shù)據(jù)是由go從后端提供的數(shù)據(jù)( 例如:{{.Title}}),而[[ ]]包裹的數(shù)據(jù),是vue渲染的數(shù)據(jù)。

只是把 Vue里的數(shù)據(jù),改為由go后端提供即可。

好吧,作者已經(jīng)在向月亮示愛(ài)了。呵呵 _

運(yùn)行一下程序,看修改模板后的效果。

GO語(yǔ)言(十一):開始使用多模塊工作區(qū)

本教程介紹 Go 中多模塊工作區(qū)的基礎(chǔ)知識(shí)。使用多模塊工作區(qū),您可以告訴 Go 命令您正在同時(shí)在多個(gè)模塊中編寫代碼,并輕松地在這些模塊中構(gòu)建和運(yùn)行代碼。

在本教程中,您將在共享的多模塊工作區(qū)中創(chuàng)建兩個(gè)模塊,對(duì)這些模塊進(jìn)行更改,并在構(gòu)建中查看這些更改的結(jié)果。

本教程需要 go1.18 或更高版本。使用go.dev/dl中的鏈接確保您已在 Go 1.18 或更高版本中安裝了 Go 。

首先,為您要編寫的代碼創(chuàng)建一個(gè)模塊。

1、打開命令提示符并切換到您的主目錄。

在 Linux 或 Mac 上:

在 Windows 上:

2、在命令提示符下,為您的代碼創(chuàng)建一個(gè)名為工作區(qū)的目錄。

3、初始化模塊

我們的示例將創(chuàng)建一個(gè)hello依賴于 golang.org/x/example 模塊的新模塊。

創(chuàng)建你好模塊:

使用 . 添加對(duì) golang.org/x/example 模塊的依賴項(xiàng)go get。

在 hello 目錄下創(chuàng)建 hello.go,內(nèi)容如下:

現(xiàn)在,運(yùn)行 hello 程序:

在這一步中,我們將創(chuàng)建一個(gè)go.work文件來(lái)指定模塊的工作區(qū)。

在workspace目錄中,運(yùn)行:

該go work init命令告訴為包含目錄中模塊的工作空間go創(chuàng)建一個(gè)文件 。go.work./hello

該go命令生成一個(gè)go.work如下所示的文件:

該go.work文件的語(yǔ)法與go.mod相同。

該go指令告訴 Go 應(yīng)該使用哪個(gè)版本的 Go 來(lái)解釋文件。它類似于文件中的go指令go.mod 。

該use指令告訴 Go在進(jìn)行構(gòu)建時(shí)hello目錄中的模塊應(yīng)該是主模塊。

所以在模塊的任何子目錄中workspace都會(huì)被激活。

2、運(yùn)行工作區(qū)目錄下的程序

在workspace目錄中,運(yùn)行:

Go 命令包括工作區(qū)中的所有模塊作為主模塊。這允許我們?cè)谀K中引用一個(gè)包,即使在模塊之外。在模塊或工作區(qū)之外運(yùn)行g(shù)o run命令會(huì)導(dǎo)致錯(cuò)誤,因?yàn)樵揼o命令不知道要使用哪些模塊。

接下來(lái),我們將golang.org/x/example模塊的本地副本添加到工作區(qū)。然后,我們將向stringutil包中添加一個(gè)新函數(shù),我們可以使用它來(lái)代替Reverse.

在這一步中,我們將下載包含該模塊的 Git 存儲(chǔ)庫(kù)的副本golang.org/x/example,將其添加到工作區(qū),然后向其中添加一個(gè)我們將從 hello 程序中使用的新函數(shù)。

1、克隆存儲(chǔ)庫(kù)

在工作區(qū)目錄中,運(yùn)行g(shù)it命令來(lái)克隆存儲(chǔ)庫(kù):

2、將模塊添加到工作區(qū)

該go work use命令將一個(gè)新模塊添加到 go.work 文件中。它現(xiàn)在看起來(lái)像這樣:

該模塊現(xiàn)在包括example.com/hello模塊和 `golang.org/x/example 模塊。

這將允許我們使用我們將在模塊副本中編寫的新代碼,而不是使用命令stringutil下載的模塊緩存中的模塊版本。

3、添加新功能。

我們將向golang.org/x/example/stringutil包中添加一個(gè)新函數(shù)以將字符串大寫。

將新文件夾添加到workspace/example/stringutil包含以下內(nèi)容的目錄:

4、修改hello程序以使用該功能。

修改workspace/hello/hello.go的內(nèi)容以包含以下內(nèi)容:

從工作區(qū)目錄,運(yùn)行

Go 命令在go.work文件指定的hello目錄中查找命令行中指定的example.com/hello模塊 ,同樣使用go.work文件解析導(dǎo)入golang.org/x/example。

go.work可以用來(lái)代替添加replace 指令以跨多個(gè)模塊工作。

由于這兩個(gè)模塊在同一個(gè)工作區(qū)中,因此很容易在一個(gè)模塊中進(jìn)行更改并在另一個(gè)模塊中使用它。

現(xiàn)在,要正確發(fā)布這些模塊,我們需要發(fā)布golang.org/x/example 模塊,例如在v0.1.0. 這通常通過(guò)在模塊的版本控制存儲(chǔ)庫(kù)上標(biāo)記提交來(lái)完成。發(fā)布完成后,我們可以增加對(duì) golang.org/x/example模塊的要求hello/go.mod:

這樣,該go命令可以正確解析工作區(qū)之外的模塊。

Go語(yǔ)言命令行利器cobra使用教程

cobra是一個(gè)提供簡(jiǎn)單接口來(lái)創(chuàng)建強(qiáng)大的現(xiàn)代CLI界面的庫(kù)類似git git tools,cobra也是一個(gè)應(yīng)用程序,它會(huì)生成你的應(yīng)用程序的腳手架來(lái)快速開發(fā)基于cobra的應(yīng)用程序

cobra提供:

cobra建立在命令、參數(shù)、標(biāo)志的結(jié)構(gòu)之上

commands代表動(dòng)作,args是事物,flags是動(dòng)作的修飾符

最好的應(yīng)用程序在使用時(shí)讀起來(lái)就像句子,因此,用戶直觀地知道如何與它們交互

模式如下:APPNAME VERB NOUN --ADJECTIVE. or APPNAME COMMAND ARG --FLAG(APPNAME 動(dòng)詞 名詞 形容詞 或者 APPNAME 命令 參數(shù) 標(biāo)志)

一些真實(shí)世界的好例子可以更好地說(shuō)明這一點(diǎn)

kubectl 命令更能體現(xiàn)APPNAME 動(dòng)詞 名詞 形容詞

如下的例子,server 是command,port是flag

這個(gè)命令中,我們告訴git 克隆url

命令是應(yīng)用程序的中心點(diǎn),應(yīng)用程序支持的每一個(gè)交互都包含在一個(gè)命令中,命令可以有子命令,也可以運(yùn)行操作

在上面的例子中,server是命令

更多關(guān)于cobra.Command

flag是一種修改命令行為的方式,cobra支持完全兼容POSIX標(biāo)志,也支持go flag package,cobra可以定義到子命令上的標(biāo)志,也可以僅對(duì)該命令可用的標(biāo)志

在上面的命令中,port是標(biāo)志

標(biāo)志的功能由 pflag library 提供,pflag library是flag標(biāo)準(zhǔn)庫(kù)的一個(gè)分支,在添加POSIX兼容性的同時(shí)維護(hù)相同的接口。

使用cobra很簡(jiǎn)單,首先,使用go get按照最新版本的庫(kù),這個(gè)命令會(huì)安裝cobra可執(zhí)行程序以及庫(kù)和依賴項(xiàng)

下一步,引入cobra到應(yīng)用程序中

雖然歡迎您提供自己的組織,但通?;贑obra的應(yīng)用程序?qū)⒆裱韵陆M織結(jié)構(gòu):

在Cobra應(yīng)用程序中,main.go文件通常非常簡(jiǎn)單。它有一個(gè)目的:初始化Cobra。

使用cobra生成器

cobra提供了程序用來(lái)創(chuàng)建你的應(yīng)用程序然后添加你想添加的命令,這是將cobra引入應(yīng)用程序最簡(jiǎn)單的方式

這兒 你可以發(fā)現(xiàn)關(guān)于cobra的更多信息

要手動(dòng)實(shí)現(xiàn)cobra,需要?jiǎng)?chuàng)建一個(gè)main.go 和rootCmd文件,可以根據(jù)需要提供其他命令

Cobra不需要任何特殊的構(gòu)造器。只需創(chuàng)建命令。

理想情況下,您可以將其放在app/cmd/root.go中:

在init()函數(shù)中定義標(biāo)志和處理配置

例子如下,cmd/root.go:

創(chuàng)建main.go

使用root命令,您需要讓主函數(shù)執(zhí)行它。為清楚起見(jiàn),Execute應(yīng)該在根目錄下運(yùn)行,盡管它可以在任何命令上調(diào)用。

在Cobra應(yīng)用程序中,main.go文件通常非常簡(jiǎn)單。它有一個(gè)目的:初始化Cobra。

可以定義其他命令,通常每個(gè)命令在cmd/目錄中都有自己的文件。

如果要?jiǎng)?chuàng)建版本命令,可以創(chuàng)建cmd/version.go并用以下內(nèi)容填充它:

如果希望將錯(cuò)誤返回給命令的調(diào)用者,可以使用RunE。

然后可以在execute函數(shù)調(diào)用中捕獲錯(cuò)誤。

標(biāo)志提供修飾符來(lái)控制操作命令的操作方式。

由于標(biāo)志是在不同的位置定義和使用的,因此我們需要在外部定義一個(gè)具有正確作用域的變量來(lái)分配要使用的標(biāo)志。

有兩種不同的方法來(lái)分配標(biāo)志。

標(biāo)志可以是“持久”的,這意味著該標(biāo)志將可用于分配給它的命令以及該命令下的每個(gè)命令。對(duì)于全局標(biāo)志,在根上指定一個(gè)標(biāo)志作為持久標(biāo)志。

也可以在本地分配一個(gè)標(biāo)志,該標(biāo)志只應(yīng)用于該特定命令。

默認(rèn)情況下,Cobra只解析目標(biāo)命令上的本地標(biāo)志,而忽略父命令上的任何本地標(biāo)志。通過(guò)啟用Command.TraverseChildren,Cobra將在執(zhí)行目標(biāo)命令之前解析每個(gè)命令上的本地標(biāo)志。

使用viper綁定標(biāo)志

在本例中,持久標(biāo)志author與viper綁定。注意:當(dāng)用戶未提供--author標(biāo)志時(shí),變量author將不會(huì)設(shè)置為config中的值。

更多關(guān)于 viper的文檔

Flags默認(rèn)是可選的,如果希望命令在未設(shè)置標(biāo)志時(shí)報(bào)告錯(cuò)誤,請(qǐng)根據(jù)需要進(jìn)行標(biāo)記:

持久性Flags

可以使用命令的Args字段指定位置參數(shù)的驗(yàn)證。

內(nèi)置了以下驗(yàn)證器:

在下面的示例中,我們定義了三個(gè)命令。兩個(gè)是頂級(jí)命令,一個(gè)(cmdTimes)是頂級(jí)命令之一的子命令。在這種情況下,根是不可執(zhí)行的,這意味著需要一個(gè)子命令。這是通過(guò)不為“rootCmd”提供“Run”來(lái)實(shí)現(xiàn)的。

我們只為一個(gè)命令定義了一個(gè)標(biāo)志。

有關(guān)標(biāo)志的更多文檔,請(qǐng)?jiān)L問(wèn)

對(duì)于一個(gè)更完整的例子更大的應(yīng)用程序,請(qǐng)檢查 Hugo 。

當(dāng)您有子命令時(shí),Cobra會(huì)自動(dòng)將help命令添加到應(yīng)用程序中。當(dāng)用戶運(yùn)行“應(yīng)用程序幫助”時(shí),將調(diào)用此函數(shù)。此外,help還支持所有其他命令作為輸入。例如,您有一個(gè)名為“create”的命令,沒(méi)有任何附加配置;調(diào)用“app help create”時(shí),Cobra將起作用。每個(gè)命令都會(huì)自動(dòng)添加“-help”標(biāo)志。

以下輸出由Cobra自動(dòng)生成。除了命令和標(biāo)志定義之外,不需要任何東西。

幫助就像其他命令一樣。它周圍沒(méi)有特殊的邏輯或行為。事實(shí)上,你可以提供你想提供的。

您可以為默認(rèn)命令提供自己的幫助命令或模板,以用于以下功能:

當(dāng)用戶提供無(wú)效的標(biāo)志或無(wú)效的命令時(shí),Cobra通過(guò)向用戶顯示“用法”來(lái)響應(yīng)。

你可以從上面的幫助中認(rèn)識(shí)到這一點(diǎn)。這是因?yàn)槟J(rèn)幫助將用法作為其輸出的一部分嵌入。

您可以提供自己的使用函數(shù)或模板供Cobra使用。與幫助一樣,函數(shù)和模板也可以通過(guò)公共方法重寫:

如果在root命令上設(shè)置了version字段,Cobra會(huì)添加一個(gè)頂級(jí)的'--version'標(biāo)志。運(yùn)行帶有“-version”標(biāo)志的應(yīng)用程序?qū)⑹褂冒姹灸0鍖姹敬蛴〉綐?biāo)準(zhǔn)輸出??梢允褂胏md.SetVersionTemplate(s string)函數(shù)自定義模板。

可以在命令的主運(yùn)行函數(shù)之前或之后運(yùn)行函數(shù)。PersistentPreRun和PreRun函數(shù)將在運(yùn)行之前執(zhí)行。PersistentPostRun和PostRun將在運(yùn)行后執(zhí)行。如果子函數(shù)不聲明自己的函數(shù),則它們將繼承Persistent*Run函數(shù)。這些函數(shù)按以下順序運(yùn)行:

輸出:

當(dāng)發(fā)生“未知命令”錯(cuò)誤時(shí),Cobra將打印自動(dòng)建議。這使得Cobra在發(fā)生拼寫錯(cuò)誤時(shí)的行為類似于git命令。例如:

基于注冊(cè)的每個(gè)子命令和Levenshtein距離的實(shí)現(xiàn),建議是自動(dòng)的。匹配最小距離2(忽略大小寫)的每個(gè)已注冊(cè)命令都將顯示為建議。

如果需要在命令中禁用建議或調(diào)整字符串距離,請(qǐng)使用:

or

您還可以使用SuggestFor屬性顯式設(shè)置將為其建議給定命令的名稱。這允許對(duì)在字符串距離方面不接近的字符串提供建議,但在您的一組命令中是有意義的,并且對(duì)于某些您不需要?jiǎng)e名的字符串。例子:

Cobra可以基于子命令、標(biāo)志等生成文檔。請(qǐng)?jiān)?docs generation文檔 中閱讀更多關(guān)于它的信息。

Cobra可以為以下shell生成shell完成文件:bash、zsh、fish、PowerShell。如果您在命令中添加更多信息,這些補(bǔ)全功能將非常強(qiáng)大和靈活。在 Shell Completions 中閱讀更多關(guān)于它的信息。

Cobra is released under the Apache 2.0 license. See LICENSE.txt


網(wǎng)頁(yè)名稱:go語(yǔ)言如何打開本地網(wǎng)頁(yè) go語(yǔ)言如何打開本地網(wǎng)頁(yè)文件
網(wǎng)站網(wǎng)址:http://weahome.cn/article/hgocsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部