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

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)

成都定制網站建設
激情网站免费在线观看| 日本精品在线亚洲国产欧美 | 背德人妻中文字幕无修| 国产日韩欧美一区综合| 亚洲成综合人在线播放| 国产精品伊人久久综合网| 日韩 高清 一区二区| 国外男女性生活在线视频| 国产日韩在线不卡网站| 中文字幕成人资源网站| av剧情在线观看免费| 91精品国产色综合久久不| 亚洲精品中国一区二区久久| 久久亚洲综合色一区二区三区| 国产男女爱猛视频在线| 精品国产熟女成人av| 七十二式性日韩视频| 人人妻人人澡人人爽精品日本| 少妇午夜福利一区二区| 日本一区二区三区高清不卡| 日韩欧美亚洲国产一区久久精品 | 91熟女激情五月综合| 亚洲天堂日韩欧美在线一区| 国产一区二区欧美日本| 欧美日韩在线不卡成人| 亚洲三级黄片在线观看| 91久久精品国产免费一区| 91高清国产最新地址| 丰满人妻少妇一区二区| 99热在线精品国产观看| 日本91大神在线观看| 久久国产精品成人av| 99久久热这里只有精品| 日本一区二区最新免费| 国产性色精品一区二区| 日韩欧美亚洲自拍另类| 国产一区二区三区在线精品专区| 欧美日韩精品福利一区二区| 日本国产一区二区在线观看| 夫妻的世界电影完整版| 亚洲视频一区视频二区|