Go(又稱(chēng) Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開(kāi)發(fā)的一種靜態(tài)強(qiáng)類(lèi)型、編譯型語(yǔ)言。Go 語(yǔ)言語(yǔ)法與 C 相近,但功能上有:內(nèi)存安全,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計(jì)算。
創(chuàng)新互聯(lián)專(zhuān)業(yè)成都做網(wǎng)站、成都網(wǎng)站制作,集網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營(yíng)銷(xiāo)、軟文發(fā)稿等專(zhuān)業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計(jì),讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專(zhuān)業(yè)設(shè)計(jì)制作為您帶來(lái)效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。
go語(yǔ)言特點(diǎn)
go語(yǔ)言的應(yīng)用領(lǐng)域
哪些公司(項(xiàng)目)在使用go語(yǔ)言
下載開(kāi)發(fā)包
windows下安裝
1.打開(kāi)下載的msi可執(zhí)行文件,根據(jù)提示進(jìn)行安裝。默認(rèn)會(huì)安裝在c:/Program Files/go目錄下面。會(huì)自動(dòng)添加go可執(zhí)行文件環(huán)境變量。
2.驗(yàn)證安裝情況
a.打開(kāi)命令行
b. 輸入$ go version
linux下安裝
1.在/usr/local/下面創(chuàng)建一個(gè)目錄go
2.下載壓縮文件到該目錄(/usr/local/go),并解壓縮
3.添加/usr/local/go/bin到PATH環(huán)境變量,打開(kāi)$HOME/.profile 或者/etc/profile輸入如下內(nèi)容:
4.執(zhí)行如下命令使得配置文件及時(shí)生效
驗(yàn)證
1.如果你的mac有Homebrew包管理工具,可以使用它來(lái)安裝
2.如果沒(méi)有下載mac安裝包,根據(jù)提示安裝
3.默認(rèn)安裝在/usr/local/go下面
4.設(shè)置環(huán)境變量,同Linux
Go語(yǔ)言也稱(chēng) Golang,兼具效率、性能、安全、健壯等特性。這套Go語(yǔ)言教程(Golang教程)通俗易懂,深入淺出,既適合沒(méi)有基礎(chǔ)的讀者快速入門(mén),也適合工作多年的程序員查閱知識(shí)點(diǎn)。
Go 語(yǔ)言
這套教程在講解一些知識(shí)點(diǎn)時(shí),將 Go 語(yǔ)言和其他多種語(yǔ)言進(jìn)行對(duì)比,讓掌握其它編程語(yǔ)言的讀者能迅速理解 Go 語(yǔ)言的特性。Go語(yǔ)言從底層原生支持并發(fā),無(wú)須第三方庫(kù)、開(kāi)發(fā)者的編程技巧和開(kāi)發(fā)經(jīng)驗(yàn)就可以輕松搞定。
Go語(yǔ)言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門(mén)語(yǔ)言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語(yǔ)言的開(kāi)發(fā)速度和 C/C++ 等編譯型語(yǔ)言的性能與安全性”。
Go語(yǔ)言是編程語(yǔ)言設(shè)計(jì)的又一次嘗試,是對(duì)類(lèi)C語(yǔ)言的重大改進(jìn),它不但能讓你訪(fǎng)問(wèn)底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語(yǔ)言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。
Go語(yǔ)言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語(yǔ)言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語(yǔ)言開(kāi)發(fā)項(xiàng)目。Go語(yǔ)言有時(shí)候被描述為“C 類(lèi)似語(yǔ)言”,或者是“21 世紀(jì)的C語(yǔ)言”。Go 從C語(yǔ)言繼承了相似的表達(dá)式語(yǔ)法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類(lèi)型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語(yǔ)言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無(wú)縫適配。
因?yàn)镚o語(yǔ)言沒(méi)有類(lèi)和繼承的概念,所以它和 Java 或 C++ 看起來(lái)并不相同。但是它通過(guò)接口(interface)的概念來(lái)實(shí)現(xiàn)多態(tài)性。Go語(yǔ)言有一個(gè)清晰易懂的輕量級(jí)類(lèi)型系統(tǒng),在類(lèi)型之間也沒(méi)有層級(jí)之說(shuō)。因此可以說(shuō)Go語(yǔ)言是一門(mén)混合型的語(yǔ)言。
此外,很多重要的開(kāi)源項(xiàng)目都是使用Go語(yǔ)言開(kāi)發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語(yǔ)言,Go 使用編譯器來(lái)編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。
使用文本編輯器創(chuàng)建 Go 程序;
保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。
這不同于 Python、Ruby 和 JavaScript 等語(yǔ)言,它們不包含編譯步驟。Go 自帶了編譯器,因此無(wú)須單獨(dú)安裝編譯器。
鏈喬教育在線(xiàn)旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國(guó)教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開(kāi)展的“智慧學(xué)習(xí)工場(chǎng)2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專(zhuān)業(yè)”試點(diǎn)工作站。專(zhuān)業(yè)站立足為學(xué)生提供多樣化成長(zhǎng)路徑,推進(jìn)專(zhuān)業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。
剛?cè)腴T(mén)Go語(yǔ)言小白需要注意以下五點(diǎn):
1、注意書(shū)寫(xiě)代碼的一些規(guī)范吧,特別是注意大小寫(xiě)、英文標(biāo)點(diǎn)符號(hào)區(qū)別等,在特別的位置寫(xiě)上注釋。
2、主要是理解偽代碼所描述的算法,偽代碼要注意是不能直接運(yùn)行的。
3、注意編譯器版本與書(shū)籍上所介紹版本是否一致,也注意特殊符號(hào),印刷版本可能與實(shí)際不一致。
4、書(shū)上的版本和當(dāng)前所用的版本是否一致,有些情況下書(shū)上版本在現(xiàn)在來(lái)用已經(jīng)過(guò)時(shí)了。
5、邏輯走通;給自己信心,其實(shí)起步階段不難的。
1、學(xué)習(xí)曲線(xiàn)
它包含了類(lèi)C語(yǔ)法、GC內(nèi)置和工程工具。這一點(diǎn)非常重要,因?yàn)镚o語(yǔ)言容易學(xué)習(xí),所以一個(gè)普通的大學(xué)生花一個(gè)星期就能寫(xiě)出來(lái)可以上手的、高性能的應(yīng)用。在國(guó)內(nèi)大家都追求快,這也是為什么國(guó)內(nèi)Go流行的原因之一。
2、效率
Go擁有接近C的運(yùn)行效率和接近PHP的開(kāi)發(fā)效率,這就很有利的支撐了上面大家追求快速的需求。
3、出身名門(mén)、血統(tǒng)純正
之所以說(shuō)Go語(yǔ)言出身名門(mén),是因?yàn)槲覀冎繥o語(yǔ)言出自Google公司,這個(gè)公司在業(yè)界的知名度和實(shí)力自然不用多說(shuō)。Google公司聚集了一批牛人,在各種編程語(yǔ)言稱(chēng)雄爭(zhēng)霸的局面下推出新的編程語(yǔ)言,自然有它的戰(zhàn)略考慮。而且從Go語(yǔ)言的發(fā)展態(tài)勢(shì)來(lái)看,Google對(duì)它這個(gè)新的寵兒還是很看重的,Go自然有一個(gè)良好的發(fā)展前途。我們看看Go語(yǔ)言的主要?jiǎng)?chuàng)造者,血統(tǒng)純正這點(diǎn)就可見(jiàn)端倪了。
4、自由高效:組合的思想、無(wú)侵入式的接口
Go語(yǔ)言可以說(shuō)是開(kāi)發(fā)效率和運(yùn)行效率二者的完美融合,天生的并發(fā)編程支持。Go語(yǔ)言支持當(dāng)前所有的編程范式,包括過(guò)程式編程、面向?qū)ο缶幊桃约昂瘮?shù)式編程。程序員們可以各取所需、自由組合、想怎么玩就怎么玩。
5、強(qiáng)大的標(biāo)準(zhǔn)庫(kù)
這包括互聯(lián)網(wǎng)應(yīng)用、系統(tǒng)編程和網(wǎng)絡(luò)編程。Go里面的標(biāo)準(zhǔn)庫(kù)基本上已經(jīng)是非常穩(wěn)定了,特別是我這里提到的三個(gè),網(wǎng)絡(luò)層、系統(tǒng)層的庫(kù)非常實(shí)用。
6、部署方便:二進(jìn)制文件、Copy部署
我相信這一點(diǎn)是很多人選擇Go的最大理由,因?yàn)椴渴鹛奖懔耍袁F(xiàn)在也有很多人用Go開(kāi)發(fā)運(yùn)維程序。
7、簡(jiǎn)單的并發(fā)
它包含了降低心智的并發(fā)和簡(jiǎn)易的數(shù)據(jù)同步,我覺(jué)得這是Go最大的特色。之所以寫(xiě)正確的并發(fā)、容錯(cuò)和可擴(kuò)展的程序如此之難,是因?yàn)槲覀冇昧隋e(cuò)誤的工具和錯(cuò)誤的抽象,Go可以說(shuō)這一塊做的相當(dāng)簡(jiǎn)單。
8、穩(wěn)定性
Go擁有強(qiáng)大的編譯檢查、嚴(yán)格的編碼規(guī)范和完整的軟件生命周期工具,具有很強(qiáng)的穩(wěn)定性,穩(wěn)定壓倒一切。那么為什么Go相比于其他程序會(huì)更穩(wěn)定呢?這是因?yàn)镚o提供了軟件生命周期(開(kāi)發(fā)、測(cè)試、部署、維護(hù)等等)的各個(gè)環(huán)節(jié)的工具,如go
tool、gofmt、go test。
本教程介紹了 Go 中模糊測(cè)試的基礎(chǔ)知識(shí)。通過(guò)模糊測(cè)試,隨機(jī)數(shù)據(jù)會(huì)針對(duì)您的測(cè)試運(yùn)行,以嘗試找出漏洞或?qū)е卤罎⒌妮斎???梢酝ㄟ^(guò)模糊測(cè)試發(fā)現(xiàn)的一些漏洞示例包括 SQL 注入、緩沖區(qū)溢出、拒絕服務(wù)和跨站點(diǎn)腳本攻擊。
在本教程中,您將為一個(gè)簡(jiǎn)單的函數(shù)編寫(xiě)一個(gè)模糊測(cè)試,運(yùn)行 go 命令,并調(diào)試和修復(fù)代碼中的問(wèn)題。
首先,為您要編寫(xiě)的代碼創(chuàng)建一個(gè)文件夾。
1、打開(kāi)命令提示符并切換到您的主目錄。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,為您的代碼創(chuàng)建一個(gè)名為 fuzz 的目錄。
3、創(chuàng)建一個(gè)模塊來(lái)保存您的代碼。
運(yùn)行g(shù)o mod init命令,為其提供新代碼的模塊路徑。
接下來(lái),您將添加一些簡(jiǎn)單的代碼來(lái)反轉(zhuǎn)字符串,稍后我們將對(duì)其進(jìn)行模糊測(cè)試。
在此步驟中,您將添加一個(gè)函數(shù)來(lái)反轉(zhuǎn)字符串。
a.使用您的文本編輯器,在 fuzz 目錄中創(chuàng)建一個(gè)名為 main.go 的文件。
獨(dú)立程序(與庫(kù)相反)始終位于 package 中main。
此函數(shù)將接受string,使用byte進(jìn)行循環(huán) ,并在最后返回反轉(zhuǎn)的字符串。
此函數(shù)將運(yùn)行一些Reverse操作,然后將輸出打印到命令行。這有助于查看運(yùn)行中的代碼,并可能有助于調(diào)試。
e.該main函數(shù)使用 fmt 包,因此您需要導(dǎo)入它。
第一行代碼應(yīng)如下所示:
從包含 main.go 的目錄中的命令行,運(yùn)行代碼。
可以看到原來(lái)的字符串,反轉(zhuǎn)它的結(jié)果,然后再反轉(zhuǎn)它的結(jié)果,就相當(dāng)于原來(lái)的了。
現(xiàn)在代碼正在運(yùn)行,是時(shí)候測(cè)試它了。
在這一步中,您將為Reverse函數(shù)編寫(xiě)一個(gè)基本的單元測(cè)試。
a.使用您的文本編輯器,在 fuzz 目錄中創(chuàng)建一個(gè)名為 reverse_test.go 的文件。
b.將以下代碼粘貼到 reverse_test.go 中。
這個(gè)簡(jiǎn)單的測(cè)試將斷言列出的輸入字符串將被正確反轉(zhuǎn)。
使用運(yùn)行單元測(cè)試go test
接下來(lái),您將單元測(cè)試更改為模糊測(cè)試。
單元測(cè)試有局限性,即每個(gè)輸入都必須由開(kāi)發(fā)人員添加到測(cè)試中。模糊測(cè)試的一個(gè)好處是它可以為您的代碼提供輸入,并且可以識(shí)別您提出的測(cè)試用例沒(méi)有達(dá)到的邊緣用例。
在本節(jié)中,您將單元測(cè)試轉(zhuǎn)換為模糊測(cè)試,這樣您就可以用更少的工作生成更多的輸入!
請(qǐng)注意,您可以將單元測(cè)試、基準(zhǔn)測(cè)試和模糊測(cè)試保存在同一個(gè) *_test.go 文件中,但對(duì)于本示例,您將單元測(cè)試轉(zhuǎn)換為模糊測(cè)試。
在您的文本編輯器中,將 reverse_test.go 中的單元測(cè)試替換為以下模糊測(cè)試。
Fuzzing 也有一些限制。在您的單元測(cè)試中,您可以預(yù)測(cè)Reverse函數(shù)的預(yù)期輸出,并驗(yàn)證實(shí)際輸出是否滿(mǎn)足這些預(yù)期。
例如,在測(cè)試用例Reverse("Hello, world")中,單元測(cè)試將返回指定為"dlrow ,olleH".
模糊測(cè)試時(shí),您無(wú)法預(yù)測(cè)預(yù)期輸出,因?yàn)槟鸁o(wú)法控制輸入。
但是,Reverse您可以在模糊測(cè)試中驗(yàn)證函數(shù)的一些屬性。在這個(gè)模糊測(cè)試中檢查的兩個(gè)屬性是:
(1)將字符串反轉(zhuǎn)兩次保留原始值
(2)反轉(zhuǎn)的字符串將其狀態(tài)保留為有效的 UTF-8。
注意單元測(cè)試和模糊測(cè)試之間的語(yǔ)法差異:
(3)確保新包unicode/utf8已導(dǎo)入。
隨著單元測(cè)試轉(zhuǎn)換為模糊測(cè)試,是時(shí)候再次運(yùn)行測(cè)試了。
a.在不進(jìn)行模糊測(cè)試的情況下運(yùn)行模糊測(cè)試,以確保種子輸入通過(guò)。
如果您在該文件中有其他測(cè)試,您也可以運(yùn)行g(shù)o test -run=FuzzReverse,并且您只想運(yùn)行模糊測(cè)試。
b.運(yùn)行FuzzReverse模糊測(cè)試,查看是否有任何隨機(jī)生成的字符串輸入會(huì)導(dǎo)致失敗。這是使用go test新標(biāo)志-fuzz執(zhí)行的。
模糊測(cè)試時(shí)發(fā)生故障,導(dǎo)致問(wèn)題的輸入被寫(xiě)入將在下次運(yùn)行的種子語(yǔ)料庫(kù)文件中g(shù)o test,即使沒(méi)有-fuzz標(biāo)志也是如此。要查看導(dǎo)致失敗的輸入,請(qǐng)?jiān)谖谋揪庉嬈髦写蜷_(kāi)寫(xiě)入 testdata/fuzz/FuzzReverse 目錄的語(yǔ)料庫(kù)文件。您的種子語(yǔ)料庫(kù)文件可能包含不同的字符串,但格式相同。
語(yǔ)料庫(kù)文件的第一行表示編碼版本。以下每一行代表構(gòu)成語(yǔ)料庫(kù)條目的每種類(lèi)型的值。由于 fuzz target 只需要 1 個(gè)輸入,因此版本之后只有 1 個(gè)值。
c.運(yùn)行沒(méi)有-fuzz標(biāo)志的go test; 新的失敗種子語(yǔ)料庫(kù)條目將被使用:
由于我們的測(cè)試失敗,是時(shí)候調(diào)試了。
Revel Web開(kāi)源框架
個(gè)高效的Go語(yǔ)言Web開(kāi)發(fā)框架,?其思路完全來(lái)自 Java 的?Play Framework。
特點(diǎn)
熱編譯,簡(jiǎn)單可選,同步(每個(gè)請(qǐng)求都創(chuàng)建自己的goroutine來(lái)處理。
Go語(yǔ)言Web框架:beego
一個(gè)用Go開(kāi)發(fā)的應(yīng)用框架,思路來(lái)自于tornado,路由設(shè)計(jì)來(lái)源于sinatra。
支持特性
MVC;
REST;
智能路由;
日志調(diào)試;
配置管理;
模板自動(dòng)渲染;
layout設(shè)計(jì);
中間件插入邏輯;
方便的JSON/XML服務(wù);
標(biāo)題名稱(chēng):go語(yǔ)言運(yùn)維開(kāi)發(fā)入門(mén) go語(yǔ)言 運(yùn)行
分享鏈接:http://www.rwnh.cn/article0/doociio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃、動(dòng)態(tài)網(wǎng)站、軟件開(kāi)發(fā)、標(biāo)簽優(yōu)化、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)