bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

go語言中心 go語言運行平臺

Go語言命令行利器cobra使用教程

cobra是一個提供簡單接口來創建強大的現代CLI界面的庫類似git git tools,cobra也是一個應用程序,它會生成你的應用程序的腳手架來快速開發基于cobra的應用程序

成都創新互聯是專業的積石山保安族東鄉族網站建設公司,積石山保安族東鄉族接單;提供成都網站建設、成都做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行積石山保安族東鄉族網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

cobra提供:

cobra建立在命令、參數、標志的結構之上

commands代表動作,args是事物,flags是動作的修飾符

最好的應用程序在使用時讀起來就像句子,因此,用戶直觀地知道如何與它們交互

模式如下:APPNAME VERB NOUN --ADJECTIVE. or APPNAME COMMAND ARG --FLAG(APPNAME 動詞 名詞 形容詞 或者 APPNAME 命令 參數 標志)

一些真實世界的好例子可以更好地說明這一點

kubectl 命令更能體現APPNAME 動詞 名詞 形容詞

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

這個命令中,我們告訴git 克隆url

命令是應用程序的中心點,應用程序支持的每一個交互都包含在一個命令中,命令可以有子命令,也可以運行操作

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

更多關于cobra.Command

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

在上面的命令中,port是標志

標志的功能由 pflag library 提供,pflag library是flag標準庫的一個分支,在添加POSIX兼容性的同時維護相同的接口。

使用cobra很簡單,首先,使用go get按照最新版本的庫,這個命令會安裝cobra可執行程序以及庫和依賴項

下一步,引入cobra到應用程序中

雖然歡迎您提供自己的組織,但通常基于Cobra的應用程序將遵循以下組織結構:

在Cobra應用程序中,main.go文件通常非常簡單。它有一個目的:初始化Cobra。

使用cobra生成器

cobra提供了程序用來創建你的應用程序然后添加你想添加的命令,這是將cobra引入應用程序最簡單的方式

這兒 你可以發現關于cobra的更多信息

要手動實現cobra,需要創建一個main.go 和rootCmd文件,可以根據需要提供其他命令

Cobra不需要任何特殊的構造器。只需創建命令。

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

在init()函數中定義標志和處理配置

例子如下,cmd/root.go:

創建main.go

使用root命令,您需要讓主函數執行它。為清楚起見,Execute應該在根目錄下運行,盡管它可以在任何命令上調用。

在Cobra應用程序中,main.go文件通常非常簡單。它有一個目的:初始化Cobra。

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

如果要創建版本命令,可以創建cmd/version.go并用以下內容填充它:

如果希望將錯誤返回給命令的調用者,可以使用RunE。

然后可以在execute函數調用中捕獲錯誤。

標志提供修飾符來控制操作命令的操作方式。

由于標志是在不同的位置定義和使用的,因此我們需要在外部定義一個具有正確作用域的變量來分配要使用的標志。

有兩種不同的方法來分配標志。

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

也可以在本地分配一個標志,該標志只應用于該特定命令。

默認情況下,Cobra只解析目標命令上的本地標志,而忽略父命令上的任何本地標志。通過啟用Command.TraverseChildren,Cobra將在執行目標命令之前解析每個命令上的本地標志。

使用viper綁定標志

在本例中,持久標志author與viper綁定。注意:當用戶未提供--author標志時,變量author將不會設置為config中的值。

更多關于 viper的文檔

Flags默認是可選的,如果希望命令在未設置標志時報告錯誤,請根據需要進行標記:

持久性Flags

可以使用命令的Args字段指定位置參數的驗證。

內置了以下驗證器:

在下面的示例中,我們定義了三個命令。兩個是頂級命令,一個(cmdTimes)是頂級命令之一的子命令。在這種情況下,根是不可執行的,這意味著需要一個子命令。這是通過不為“rootCmd”提供“Run”來實現的。

我們只為一個命令定義了一個標志。

有關標志的更多文檔,請訪問

對于一個更完整的例子更大的應用程序,請檢查 Hugo 。

當您有子命令時,Cobra會自動將help命令添加到應用程序中。當用戶運行“應用程序幫助”時,將調用此函數。此外,help還支持所有其他命令作為輸入。例如,您有一個名為“create”的命令,沒有任何附加配置;調用“app help create”時,Cobra將起作用。每個命令都會自動添加“-help”標志。

以下輸出由Cobra自動生成。除了命令和標志定義之外,不需要任何東西。

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

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

當用戶提供無效的標志或無效的命令時,Cobra通過向用戶顯示“用法”來響應。

你可以從上面的幫助中認識到這一點。這是因為默認幫助將用法作為其輸出的一部分嵌入。

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

如果在root命令上設置了version字段,Cobra會添加一個頂級的'--version'標志。運行帶有“-version”標志的應用程序將使用版本模板將版本打印到標準輸出。可以使用cmd.SetVersionTemplate(s string)函數自定義模板。

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

輸出:

當發生“未知命令”錯誤時,Cobra將打印自動建議。這使得Cobra在發生拼寫錯誤時的行為類似于git命令。例如:

基于注冊的每個子命令和Levenshtein距離的實現,建議是自動的。匹配最小距離2(忽略大小寫)的每個已注冊命令都將顯示為建議。

如果需要在命令中禁用建議或調整字符串距離,請使用:

or

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

Cobra可以基于子命令、標志等生成文檔。請在 docs generation文檔 中閱讀更多關于它的信息。

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

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

為什么要使用 Go 語言?Go 語言的優勢在哪里

已經有好多程序員都把Go語言描述為是一種所見即所得(WYSIWYG)的編程語言。這是說,代碼要做的事和它在字面上表達的意思是完全一致的。 在這些新語言中,包含D,Go,Rust和Vala語言,Go曾一度出現在TIOBE的排行榜上面。與其他新語言相比,Go的魅力明顯要大很多。Go的成熟特征會得到許多開發者的欣賞,而不僅僅是因為其夸大其詞的曝光度。下面我們來一起探討一下谷歌開發的Go語言以及談談Go為什么會吸引眾多開發者: 快速簡單的編譯 Go編譯速度很快,如此快速的編譯使它很容易作為腳本語言使用。關于編譯速度快主要有以下幾個原因:首先,Go不使用頭文件;其次如果一個模塊是依賴A的,這反過來又取決于B,在A里面的需求改變只需重新編譯原始模塊和與A相依賴的地方;最后,對象模塊里面包含了足夠的依賴關系信息,所以編譯器不需要重新創建文件。你只需要簡單地編譯主模塊,項目中需要的其他部分就會自動編譯,很酷,是不是? 通過返回數值列表來處理錯誤信息 目前,在本地語言里面處理錯誤的方式主要有兩種:直接返回代碼或者拋異常。這兩種都不是最理想的處理方式。其中返回代碼是非常令人沮喪的,因為返回的錯誤代碼經常與從函數中返回的數據相沖突。Go允許函數返回多個值來解決這個問題。這個從函數里面返回的值,可以用來檢查定義的類型是否正確并且可以隨時隨地對函數的返回值進行檢查。如果你對錯誤值不關心,你可以不必檢查。在這兩種情況下,常規的返回值都是可用的。 簡化的成分(優先于繼承) 通過使用接口,類型是有資格成為對象中一員的,就像Java指定行為一樣。例如在標準庫里面的IO包,定義一個Writer來指定一個方法,一個Writer函數,其中輸入參數是字節數組并且返回整數類型值或者錯誤類型。任何類型實現一個帶有相同簽名的Writer方法是對IO的完全實現,Writer接口。這種是解耦代碼而不是優雅。它還簡化了模擬對象來進行單元測試。例如你想在數據庫對象中測試一個方法,在標準語言中,你通常需要創建一個數據庫對象,并且需要進行大量的初始化和協議來模擬對象。在Go里面,如果該方法需要實現一個接口,你可以創建任何對該接口有用的對象,所以,你創建了MockDatabase,這是很小的對象,只實現了幾個需要運行和模擬的接口——沒有構造函數,沒有附件功能,只是一些方法。 簡化的并發性 相對于其他語言,并發性在Go里面顯得更加容易。把‘go’關鍵字放在任意函數前面然后那個函數就會在其go-routine自動運行(一個很輕的線程)。go-routines是通過通道進行交流并且基本上封鎖了所有的隊列消息。普通工具對相互排斥是有用,但是Go通過使用通道來踢掉并發性任務和坐標更加容易。 優秀的錯誤消息 所有與Go相似的語言,自身作出的診斷都是無法與Go相媲美的。例如,一個死鎖程序,在Go運行時會通知你目前哪個線程導致了這種死鎖。編譯的錯誤信息是非常詳細全面和有用的。 其他 這里還有許多其他吸引人的地方,下面就一概而過的介紹一下,比如高階函數、垃圾回收、哈希映射和可擴展的數組內置語言(部分語言語法,而不是作為一個庫)等等。 當然,Go并不是完美無瑕。在工具方面還有些不成熟的地方和用戶社區較小等,但是隨著谷歌語言的不斷發展,肯定會有整治措施出來。盡管許多語言,尤其是D、Rust和Vala旨在簡化C++并且對其進行簡化,但它們給人的感覺仍是“C++看上去要更好”。

對比 Go 語言,Rust 有什么優勢和劣勢?

我并沒有什么編程的經驗,覺得編程實在是太復雜了,不喜歡去研究太多,對這個也不怎么懂,只能說自己是個半吊子,就是所掌握的知識,也是東拼西湊的,朋友和我說點兒,自己去書上看一點兒,只能說根據自己的體驗給出一些體會吧。

Rust的優勢是:

1、Rust把安全、精確的內存管理作為一切的中心放在首要的位置。

2、Rust同時擁有特別強的控制性和特別強的安全性。

3、Rust語言通過: 優秀的類型系統設計、 嚴格的編譯器靜態審查、 配合程序員局部核對、加上少量的運行時校驗,保障了內存安全。

4、Rust的語言特別的復雜,導致學習曲線比較陡峭,對于初學者來說難度較大。但學通之后將終生受益。

5、效率高,速度特別的快

6、 支持范型

7、 社區活躍度很高,更加的強調了社區的作用。

8、Rust 有更強的語義,更容易捕獲錯誤的邏輯,編譯器直接檢查出你代碼中的不安全的部分

Rust的劣勢是:

1、 語言相對來說比較復雜,對于新手來說,讓新手摸不著頭腦。

2、還不算太穩定。

其實我覺得什么代碼啊編程啊這些東西還是比較適合理工的學生去研究,我一看腦袋就大,完全不明白在講什么。我大概了解的就是這些,語言的話大家可以多方面的去了解,也不是說有缺點就是不好,看配置看個人吧,每個人習慣不一樣,也許有的人用不穩定的還覺得挺好呢,有的人就喜歡比較完美的,在我看來編程這個東西真的是很復雜,會有很多的代碼,這些代碼弄得我自己頭都大了,有的時候還得去惡補一下。

如何學習GO語言?

Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎的讀者快速入門,也適合工作多年的程序員查閱知識點。

Go 語言

這套教程在講解一些知識點時,將 Go 語言和其他多種語言進行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發,無須第三方庫、開發者的編程技巧和開發經驗就可以輕松搞定。

Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發布。Go 是非常年輕的一門語言,它的主要目標是“兼具 Python 等動態語言的開發速度和 C/C++ 等編譯型語言的性能與安全性”。

Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統,還提供了強大的網絡編程和并發編程支持。Go語言的用途眾多,可以進行網絡編程、系統編程、并發編程、分布式編程。

Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有“部署簡單、并發性好、語言設計良好、執行性能好”等優勢,目前國內諸多 IT 公司均已采用Go語言開發項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀的C語言”。Go 從C語言繼承了相似的表達式語法、控制流結構、基礎數據類型、調用參數傳值、指針等很多思想,還有C語言一直所看中的編譯后機器碼的運行效率以及和現有操作系統的無縫適配。

因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現多態性。Go語言有一個清晰易懂的輕量級類型系統,在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。

此外,很多重要的開源項目都是使用Go語言開發的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進制(或字節碼)格式;在編譯代碼時,編譯器檢查錯誤、優化性能并輸出可在不同平臺上運行的二進制文件。要創建并運行 Go 程序,程序員必須執行如下步驟。

使用文本編輯器創建 Go 程序;

保存文件;編譯程序;運行編譯得到的可執行文件。

這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。

鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的“智慧學習工場2020-學碩創新工作站 ”唯一獲準的“區塊鏈技術專業”試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。

go語言的官網是什么?

go語言的官網是

Go語言是谷歌推出的一種全新的編程語言,可以在不損失應用程序性能的情況下降低代碼的復雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟件開發的難度令人沮喪。

Go是谷歌2009發布的第二款編程語言。2009年7月份,谷歌曾發布了Simple語言,它是用來開發Android應用

Go Logo

的一種BASIC語言.

北京時間2010年1月10日,Go語言摘得了TIOBE公布的2009年年度大獎。該獎項授予在2009年市場份額增長最多的編程語言。

谷歌資深軟件工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發效率。”派克表示,和今天的C++或C一樣,Go是一種系統語言。他解釋道,“使用它可以進行快速開發,同時它還是一個真正的編譯語言,我們之所以現在將其開源,原因是我們認為它已經非常有用和強大。”

2007年,谷歌把Go作為一個20%項目開始研發,即讓員工抽出本職工作之外時間的20%, 投入在該項目上。除了派克外,該項目的成員還有其他谷歌工程師也參與研發。

派克表示,編譯后Go代碼的運行速度與C語言非常接近,而且編譯速度非常快,就像在使用一個交互式語言。現有編程語言均未專門對多核處理器進行優化。Go就是谷歌工程師為這類程序編寫的一種語言。它不是針對編程初學者設計的,但學習使用它也不是非常困難。Go支持面向對象,而且具有真正的閉包(closures)和反射 (reflection)等功能。

在學習曲線方面,派克認為Go與Java類似,對于Java開發者來說,應該能夠輕松學會 Go。之所以將Go作為一個開源項目發布,目的是讓開源社區有機會創建更好的工具來使用該語言,例如 Eclipse IDE中的插件。

在谷歌公開發布的所有網絡應用中,均沒有使用Go,但是谷歌已經使用該語言開發了幾個內部項目。派克表示,Go是否會對谷歌即將推出的Chrome OS產生影響,還言之尚早,不過Go的確可以和Native Client配合使用。他表示“Go可以讓應用完美的運行在瀏覽器內。”例如,使用Go可以更高效的實現Wave,無論是在前端還是后臺。

Go 同時具有兩種編譯器,一種是建立在GCC基礎上的Gccgo,另外一種是分別針對64位x64和32位x86計算機的一套編譯器(6g和8g)。谷歌目前正在研發其對ARM芯片和Android設備的支持。派克表示,“Android手機存在的問題是,我們一直沒有一個數學協處理器。”

為什么要使用 Go 語言?Go 語言的優勢在哪里?

1、簡單易學。

Go語言的作者本身就很懂C語言,所以同樣Go語言也會有C語言的基因,所以對于程序員來說,Go語言天生就會讓人很熟悉,容易上手。

2、并發性好。

Go語言天生支持并發,可以充分利用多核,輕松地使用并發。 這是Go語言最大的特點。

描述

Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進程(CSP)為基礎,采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特征,比如通道傳輸。

在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態加載部分函數。

與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能,但增加了 切片(Slice) 型、并發、管道、垃圾回收、接口(Interface)等特性的語言級支持。

分享名稱:go語言中心 go語言運行平臺
標題URL:http://vcdvsql.cn/article32/dooossc.html

成都網站建設公司_創新互聯,為您提供外貿建站企業建站網站內鏈網站營銷網站排名品牌網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司