成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

go語(yǔ)言hook go語(yǔ)言后端框架2021

為什么要使用 Go 語(yǔ)言?Go 語(yǔ)言的優(yōu)勢(shì)在哪里

1、學(xué)習(xí)曲線(xiàn)

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了武隆免費(fèi)建站歡迎大家使用!

它包含了類(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、部署方便

我相信這一點(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提供了軟件生命周期的各個(gè)環(huán)節(jié)的工具,如go

tool、gofmt、go test。

golang反射框架Fx

Fx是一個(gè)golang版本的依賴(lài)注入框架,它使得golang通過(guò)可重用、可組合的模塊化來(lái)構(gòu)建golang應(yīng)用程序變得非常容易,可直接在項(xiàng)目中添加以下內(nèi)容即可體驗(yàn)Fx效果。

Fx是通過(guò)使用依賴(lài)注入的方式替換了全局通過(guò)手動(dòng)方式來(lái)連接不同函數(shù)調(diào)用的復(fù)雜度,也不同于其他的依賴(lài)注入方式,F(xiàn)x能夠像普通golang函數(shù)去使用,而不需要通過(guò)使用struct標(biāo)簽或內(nèi)嵌特定類(lèi)型。這樣使得Fx能夠在很多go的包中很好的使用。

接下來(lái)會(huì)提供一些Fx的簡(jiǎn)單demo,并說(shuō)明其中的一些定義。

1、一般步驟

大致的使用步驟就如下。下面會(huì)給出一些完整的demo

2、簡(jiǎn)單demo

將io.reader與具體實(shí)現(xiàn)類(lèi)關(guān)聯(lián)起來(lái)

輸出:

3、使用struct參數(shù)

前面的使用方式一旦需要進(jìn)行注入的類(lèi)型過(guò)多,可以通過(guò)struct參數(shù)方式來(lái)解決

輸出

如果通過(guò)Provide提供構(gòu)造函數(shù)是生成相同類(lèi)型會(huì)有什么問(wèn)題?換句話(huà)也就是相同類(lèi)型擁有多個(gè)值呢?

下面兩種方式就是來(lái)解決這樣的問(wèn)題。

4、使用struct參數(shù)+Name標(biāo)簽

在Fx未使用Name或Group標(biāo)簽時(shí)不允許存在多個(gè)相同類(lèi)型的構(gòu)造函數(shù),一旦存在會(huì)觸發(fā)panic。

輸出

上面通過(guò)Name標(biāo)簽即可完成在Fx容器注入相同類(lèi)型

5、使用struct參數(shù)+Group標(biāo)簽

使用group標(biāo)簽同樣也能完成上面的功能

輸出

基本上Fx簡(jiǎn)單應(yīng)用在上面的例子也做了簡(jiǎn)單講解

1、Annotated(位于annotated.go文件) 主要用于采用annotated的方式,提供Provide注入類(lèi)型

源碼中Name和Group兩個(gè)字段與前面提到的Name標(biāo)簽和Group標(biāo)簽是一樣的,只能選其一使用

2、App(位于app.go文件) 提供注入對(duì)象具體的容器、LiftCycle、容器的啟動(dòng)及停止、類(lèi)型變量及實(shí)現(xiàn)類(lèi)注入和兩者映射等操作

至于Provide和Populate的源碼相對(duì)比較簡(jiǎn)單易懂在這里不在描述

具體源碼

3、Extract(位于extract.go文件)

主要用于在application啟動(dòng)初始化過(guò)程通過(guò)依賴(lài)注入的方式將容器中的變量值來(lái)填充給定的struct,其中target必須是指向struct的指針,并且只能填充可導(dǎo)出的字段(golang只能通過(guò)反射修改可導(dǎo)出并且可尋址的字段),Extract將被Populate代替。 具體源碼

4、其他

諸如Populate是用來(lái)替換Extract的,而LiftCycle和inout.go涉及內(nèi)容比較多后續(xù)會(huì)單獨(dú)提供專(zhuān)屬文件說(shuō)明。

在Fx中提供的構(gòu)造函數(shù)都是惰性調(diào)用,可以通過(guò)invocations在application啟動(dòng)來(lái)完成一些必要的初始化工作:fx.Invoke(function); 通過(guò)也可以按需自定義實(shí)現(xiàn)LiftCycle的Hook對(duì)應(yīng)的OnStart和OnStop用來(lái)完成手動(dòng)啟動(dòng)容器和關(guān)閉,來(lái)滿(mǎn)足一些自己實(shí)際的業(yè)務(wù)需求。

Fx框架源碼解析

主要包括app.go、lifecycle.go、annotated.go、populate.go、inout.go、shutdown.go、extract.go(可以忽略,了解populate.go)以及輔助的internal中的fxlog、fxreflect、lifecycle

Go語(yǔ)言基礎(chǔ)語(yǔ)法(一)

本文介紹一些Go語(yǔ)言的基礎(chǔ)語(yǔ)法。

先來(lái)看一個(gè)簡(jiǎn)單的go語(yǔ)言代碼:

go語(yǔ)言的注釋方法:

代碼執(zhí)行結(jié)果:

下面來(lái)進(jìn)一步介紹go的基礎(chǔ)語(yǔ)法。

go語(yǔ)言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫(kù),

常用方法:

示例代碼:

執(zhí)行結(jié)果:

更多格式化方法可以訪(fǎng)問(wèn)中的fmt包。

log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),也提供了一些格式化輸出的方法。

執(zhí)行結(jié)果:

下面來(lái)介紹一下go的數(shù)據(jù)類(lèi)型

下表列出了go語(yǔ)言的數(shù)據(jù)類(lèi)型:

int、float、bool、string、數(shù)組和struct屬于值類(lèi)型,這些類(lèi)型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類(lèi)型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。

常量是在程序編譯時(shí)就確定下來(lái)的值,程序運(yùn)行時(shí)無(wú)法改變。

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

Go 語(yǔ)言的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符以及指針相關(guān)運(yùn)算符。

算術(shù)運(yùn)算符:

關(guān)系運(yùn)算符:

邏輯運(yùn)算符:

位運(yùn)算符:

賦值運(yùn)算符:

指針相關(guān)運(yùn)算符:

下面介紹一下go語(yǔ)言中的if語(yǔ)句和switch語(yǔ)句。另外還有一種控制語(yǔ)句叫select語(yǔ)句,通常與通道聯(lián)用,這里不做介紹。

if語(yǔ)法格式如下:

if ... else :

else if:

示例代碼:

語(yǔ)法格式:

另外,添加 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語(yǔ)句,不管下一條case語(yǔ)句是否為true。

示例代碼:

執(zhí)行結(jié)果:

下面介紹幾種循環(huán)語(yǔ)句:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

也可以通過(guò)標(biāo)記退出循環(huán):

--THE END--

網(wǎng)站欄目:go語(yǔ)言hook go語(yǔ)言后端框架2021
文章來(lái)源:http://jinyejixie.com/article12/dophcdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序動(dòng)態(tài)網(wǎng)站、靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站維護(hù)、企業(yè)建站

廣告

聲明:本網(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)

網(wǎng)站優(yōu)化排名
临猗县| 江川县| 安新县| 福鼎市| 高邑县| 根河市| 望城县| 贺州市| 江安县| 周至县| 区。| 托克逊县| 信阳市| 团风县| 阳谷县| 舒城县| 长治县| 元朗区| 陆河县| 海城市| 天水市| 平乡县| 资源县| 海门市| 昌都县| 东辽县| 邻水| 兰坪| 方城县| 甘德县| 柳河县| 茌平县| 潼南县| 称多县| 霍林郭勒市| 泽普县| 调兵山市| 浪卡子县| 汾西县| 平罗县| 五大连池市|