欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

go語言事件回滾 go 反轉字符串

講講go語言的結構體

作為C語言家族的一員,go和c一樣也支持結構體??梢灶惐扔趈ava的一個POJO。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供湘潭網站建設、湘潭做網站、湘潭網站設計、湘潭網站制作等企業(yè)網站建設、網頁設計與制作、湘潭企業(yè)網站模板建站服務,十載湘潭做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

在學習定義結構體之前,先學習下定義一個新類型。

新類型 T1 是基于 Go 原生類型 int 定義的新自定義類型,而新類型 T2 則是 基于剛剛定義的類型 T1,定義的新類型。

這里要引入一個底層類型的概念。

如果一個新類型是基于某個 Go 原生類型定義的, 那么我們就叫 Go 原生類型為新類型的底層類型

在上面的例子中,int就是T1的底層類型。

但是T1不是T2的底層類型,只有原生類型才可以作為底層類型,所以T2的底層類型還是int

底層類型是很重要的,因為對兩個變量進行顯式的類型轉換,只有底層類型相同的變量間才能相互轉換。底層類型是判斷兩個類型本質上是否相同的根本。

這種類型定義方式通常用在 項目的漸進式重構,還有對已有包的二次封裝方面

類型別名表示新類型和原類型完全等價,實際上就是同一種類型。只不過名字不同而已。

一般我們都是定義一個有名的結構體。

字段名的大小寫決定了字段是否包外可用。只有大寫的字段可以被包外引用。

還有一個點提一下

如果換行來寫

Age: 66,后面這個都好不能省略

還有一個點,觀察e3的賦值

new返回的是一個指針。然后指針可以直接點號賦值。這說明go默認進行了取值操作

e3.Age 等價于 (*e3).Age

如上定義了一個空的結構體Empty。打印了元素e的內存大小是0。

有什么用呢?

基于空結構體類型內存零開銷這樣的特性,我們在日常 Go 開發(fā)中會經常使用空 結構體類型元素,作為一種“事件”信息進行 Goroutine 之間的通信

這種以空結構體為元素類建立的 channel,是目前能實現(xiàn)的、內存占用最小的 Goroutine 間通信方式。

這種形式需要說的是幾個語法糖。

語法糖1:

對于結構體字段,可以省略字段名,只寫結構體名。默認字段名就是結構體名

這種方式稱為 嵌入字段

語法糖2:

如果是以嵌入字段形式寫的結構體

可以省略嵌入的Reader字段,而直接訪問ReaderName

此時book是一個各個屬性全是對應類型零值的一個實例。不是nil。這種情況在Go中稱為零值可用。不像java會導致npe

結構體定義時可以在字段后面追加標簽說明。

tag的格式為反單引號

tag的作用是可以使用[反射]來檢視字段的標簽信息。

具體的作用還要看使用的場景。

比如這里的tag是為了幫助 encoding/json 標準包在解析對象時可以利用的規(guī)則。比如omitempty表示該字段沒有值就不打印出來。

Go語言事件請求處理程序(Event Handler)

在Go語言的代碼中,您需要引入官方的SDK庫 aliyun/serverless/fc-runtime-go-sdk/fc,并實現(xiàn)handler函數和main函數。 示例如下:

傳入的event參數是一個包含key屬性的JSON字符串,示例如下。

具體的示例解析如下:

有效的Event Handler簽名如下:

其中,InputType和OutputType與encoding/json標準庫兼容。

Event Handler的使用需遵循以下規(guī)則:

事件函數的Handler示例代碼:

Go語言——goroutine并發(fā)模型

參考:

Goroutine并發(fā)調度模型深度解析手擼一個協(xié)程池

Golang 的 goroutine 是如何實現(xiàn)的?

Golang - 調度剖析【第二部分】

OS線程初始棧為2MB。Go語言中,每個goroutine采用動態(tài)擴容方式,初始2KB,按需增長,最大1G。此外GC會收縮??臻g。

BTW,增長擴容都是有代價的,需要copy數據到新的stack,所以初始2KB可能有些性能問題。

更多關于stack的內容,可以參見大佬的文章。 聊一聊goroutine stack

用戶線程的調度以及生命周期管理都是用戶層面,Go語言自己實現(xiàn)的,不借助OS系統(tǒng)調用,減少系統(tǒng)資源消耗。

Go語言采用兩級線程模型,即用戶線程與內核線程KSE(kernel scheduling entity)是M:N的。最終goroutine還是會交給OS線程執(zhí)行,但是需要一個中介,提供上下文。這就是G-M-P模型

Go調度器有兩個不同的運行隊列:

go1.10\src\runtime\runtime2.go

Go調度器根據事件進行上下文切換。

調度的目的就是防止M堵塞,空閑,系統(tǒng)進程切換。

詳見 Golang - 調度剖析【第二部分】

Linux可以通過epoll實現(xiàn)網絡調用,統(tǒng)稱網絡輪詢器N(Net Poller)。

文件IO操作

上面都是防止M堵塞,任務竊取是防止M空閑

每個M都有一個特殊的G,g0。用于執(zhí)行調度,gc,棧管理等任務,所以g0的棧稱為調度棧。g0的棧不會自動增長,不會被gc,來自os線程的棧。

go1.10\src\runtime\proc.go

G沒辦法自己運行,必須通過M運行

M通過通過調度,執(zhí)行G

從M掛載P的runq中找到G,執(zhí)行G

網站題目:go語言事件回滾 go 反轉字符串
當前網址:http://aaarwkj.com/article26/hhhsjg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網站、定制開發(fā)用戶體驗、網站排名關鍵詞優(yōu)化、響應式網站

廣告

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

成都定制網站建設
91免费看片在线观看| 欧美私人影院—区二区日本| 中文字幕亚洲天堂久久| 国产日韩传媒在线观看| 亚洲国产精品综合久久网络| 亚洲中文字幕一区二区人妻| 四虎最新在线播放视频| 欧美日韩亚洲精品久久| 精品国产一区二区三区四不卡在线| 亚洲综合中文字幕日韩| 亚洲欧美日韩特级黄片| 五十路六十路美熟人妻| 打开网址国语一级黄色片| 国语对白精品视频在线| 亚洲精品欧美日韩久久| 麻豆精品午夜福利在线| 成年人国产免费在线观看| 国产91九色视频在线| 国产精品国产亚洲av| 成人黄色片久久久大全| 一区二区中文字幕日本韩国| 国产青青草成人在线视频| 国产自拍成人精品视频| 国产成人+亚洲欧洲综合| 国产我不卡在线观看免费| 亚洲精品国产av一区| 亚洲狠狠爱一区二区三区| 国产大学生吞精在线视频| 亚洲精品视频一区二区| 五月婷婷色综合激情五月| 欧美日韩国产免费电影| 伊在人天堂亚洲香蕉精品区| 成年人收看黄色一二级片| 久久热久久热精品视频| 尤物在线免费观看视频| 欧美国产大片一区视频| 日韩精品在线免费观看了| 国偷蜜桃av一区二区三区| 国产又粗又硬又长又爽在线观看| 日韩伦理高清在线观看| 色噜噜男人的天堂av|