欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

為什么我們要學(xué)go語言?go語言的優(yōu)勢-創(chuàng)新互聯(lián)

之所以會寫這篇文章,是因為在自學(xué) Go 語言的過程,總會有些困惑和迷茫,總希望更好地學(xué)習(xí)下去,因此有了一些想法,在這里梳理一下,以便日后回過頭來也可以看看此時此刻的想法。

創(chuàng)新互聯(lián)建站服務(wù)項目包括察布查爾錫伯網(wǎng)站建設(shè)、察布查爾錫伯網(wǎng)站制作、察布查爾錫伯網(wǎng)頁制作以及察布查爾錫伯網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,察布查爾錫伯網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到察布查爾錫伯省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

一.?Go 語言的出現(xiàn)

在具體學(xué)習(xí) go 語言的基礎(chǔ)語法之前,我們來了解一下 go 語言出現(xiàn)的時機及其特點。

Go 語言最初由 Google 公司的 Robert Griesemer、Ken Thompson 和 Rob Pike 三個大牛于 2007 年開始設(shè)計發(fā)明,他們最終的目標(biāo)是設(shè)計一種適應(yīng)網(wǎng)絡(luò)和多核時代的 C 語言。所以 Go 語言很多時候被描述為“類 C 語言”,或者是“21 世紀(jì)的 C 語言”,當(dāng)然從各種角度看,Go 語言確實是從 C 語言繼承了相似的表達式語法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等諸多編程思想。但是 Go 語言更是對 C 語言最徹底的一次揚棄,它舍棄了 C 語言中靈活但是危險的指針運算,還重新設(shè)計了 C 語言中部分不太合理運算符的優(yōu)先級,并在很多細(xì)微的地方都做了必要的打磨和改變。

Go 語言其實是 Golanguage 的簡稱,Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強類型、編譯并發(fā)型語言。Go 語言語法與 C 相近,但功能上有:內(nèi)存安全,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計算。該語言的吉祥物為金花鼠(gordon),如下圖所示。

二、G 語言的理論學(xué)習(xí)

1、go 接口

所有接口的父接口是一個空類,interface{}替代任意類型

2、go 泛型

go1.7 之前的 go 泛型實現(xiàn)是使用 interface{}替代任意類型,需要使用 swich 做類型斷言判斷。1.7 之后引入了類似 java 語言的泛型概念,這種泛型概念就是模板,在程序運行時需要 copy 一份模板生成對應(yīng)類型的方法并寫入內(nèi)存中,故泛型系統(tǒng)程序運行時復(fù)雜性提升。

3、o 引用類型

切片、map(字典)、channel(管道),接口,指針 這五種在 go 中是引用類型,其余類型為值類型。引用類型的引用存在內(nèi)存棧中,值存在堆內(nèi)存中。go 垃圾回收器 GC 回收的是堆內(nèi)存中沒有引用的空間。也就是說引用類型若要回收時只需要將引用指向 nil 即可。

在變量傳遞(函數(shù)傳參)時,值類型數(shù)據(jù)是拷貝專遞。引用類型是地址傳遞,在函數(shù)傳參時,如果是值傳遞,修改被傳遞的參數(shù)不會影響原有變量,如果是引用傳遞,函數(shù)內(nèi)部修改會影響外界。

4、切片和數(shù)組的顯著區(qū)別

切片是一個引用類型,數(shù)組是一個值類型。數(shù)組一旦創(chuàng)建大小是固定的。切片底層也是數(shù)據(jù),切片在運行時可以動態(tài)增加大小。切片是可以動態(tài)雙倍擴容的,使用的是數(shù)組內(nèi)置的添加,復(fù)制功能。

切片的方法

len() 返回切片中元素的個數(shù)

cap() 返回切片的容量

5、go 語言中的列表和字典

列表:list.List ; 聲明:var name list.List? ? or? ? ?name := list.List。列表的底層數(shù)據(jù)結(jié)構(gòu)是雙向鏈表。

字典:map,提供映射關(guān)系的容器,其內(nèi)部是通過散列表實現(xiàn)的

6、go select

select 可以隨機選擇一條 channel 沒有讀寫阻塞的 case 執(zhí)行。實際上就是找到?jīng)]有阻塞的 channel。

7、一個協(xié)程如何等其余協(xié)程執(zhí)行完成之后再執(zhí)行

? 等待組:sync.WaitGroup。在等待預(yù)設(shè)數(shù)量的協(xié)程都執(zhí)行并且結(jié)束后,才會向下執(zhí)行。

? waitGroup.add(5) //設(shè)置執(zhí)行的協(xié)程數(shù)

? waitGroup.Done()//一個協(xié)程執(zhí)行完成后減一的動作

? waitGroup.wait()//等待協(xié)程等待

? 另一種辦法:給一個共用參數(shù)(切片)等待攜程看這個共用參數(shù)信號確定是否執(zhí)行

8、死鎖

死鎖:主協(xié)程被阻塞

避免方式:

不能單個協(xié)程自讀自寫一個沒有緩沖能力的 channel

A 協(xié)程要求 B 協(xié)程先寫入自己在讀出,B 協(xié)程要求 A 協(xié)程先讀出自己再寫入。此時 AB 死鎖

在 range channel 時,要注意 channel 的寫入關(guān)閉,如果不關(guān)閉管道,range channel 就永遠阻塞

9、go 的 channel 有緩沖和沒緩沖的區(qū)別

有緩沖的管道:即使沒有寫入,也能讀出若干默認(rèn)值。即使沒有讀出,也能寫入若干值。

無緩沖的管道:只要沒有協(xié)程寫入就讀出阻塞。沒有協(xié)程讀出,就寫入阻塞。

10、go 為啥可以高并發(fā)

G-M-P 模型

當(dāng)一個線程運行在某一個 cpu 的核上,這個線程下可能會有很多個協(xié)程(微協(xié)程),當(dāng)前有其中一個協(xié)程處于運行狀態(tài),其余的在協(xié)程隊列中排隊等待。

實際 M(物理線程)之間的調(diào)度是在操作系統(tǒng)上完成的,效率低下。go 則是一個 M(物理態(tài)線程)下掛有一個邏輯態(tài)的協(xié)程隊列,其調(diào)度是邏輯調(diào)度,不在操作系統(tǒng)層面調(diào)度。則效率高。

三、GO 語言的技能學(xué)習(xí)

GO 標(biāo)識符 關(guān)鍵字 變量 常量

標(biāo)識符

標(biāo)識符是指 Go 語言對各種變量、方法、函數(shù)等命名時使用的字符序列,標(biāo)識符由若干個字母、下劃線_、和數(shù)字組成,且第一個字符必須是字母。通俗的講就是凡可以自己定義的名稱都可以叫做標(biāo)識符。

下劃線_是一個特殊的標(biāo)識符,稱為空白標(biāo)識符,它可以像其他標(biāo)識符那樣用于變量的聲明或賦值(任何類型都可以賦值給它),但任何賦給這個標(biāo)識符的值都將被拋棄,因此這些值不能在后續(xù)的代碼中使用,也不可以使用_作為變量對其它變量進行賦值或運算。

在使用標(biāo)識符之前必須進行聲明,聲明一個標(biāo)識符就是將這個標(biāo)識符與常量、類型、變量、函數(shù)或者代碼包綁定在一起。在同一個代碼塊內(nèi)標(biāo)識符的名稱不能重復(fù)。

標(biāo)識符的命名需要遵守以下規(guī)則:

a. 由 26 個英文字母、0~9、_組成;

b. 不能以數(shù)字開頭,例如 var 1num int 是錯誤的;

c. Go 語言中嚴(yán)格區(qū)分大小寫;

d. 標(biāo)識符不能包含空格;

d. 不能以系統(tǒng)保留關(guān)鍵字作為標(biāo)識符,比如 break,if 等等。

命名標(biāo)識符時還需要注意以下幾點:

a. 標(biāo)識符的命名要盡量采取簡短且有意義;

b. 不能和標(biāo)準(zhǔn)庫中的包名重復(fù);

c. 為變量、函數(shù)、常量命名時采用駝峰命名法,例如 stuName、getVal;

當(dāng)然 Go 語言中的變量、函數(shù)、常量名稱的首字母也可以大寫,如果首字母大寫,則表示它可以被其它的包訪問(類似于 Java 中的 public);如果首字母小寫,則表示它只能在本包中使用 (類似于 Java 中 private)。

在 Go 語言中還存在著一些特殊的標(biāo)識符,叫做預(yù)定義標(biāo)識符,如下表所示:

預(yù)定義標(biāo)識符一共有 36 個,主要包含 Go 語言中的基礎(chǔ)數(shù)據(jù)類型和內(nèi)置函數(shù),這些預(yù)定義標(biāo)識符也不可以當(dāng)做標(biāo)識符來使用。

關(guān)鍵字

關(guān)鍵字是 Go 語?預(yù)先定義好的,有特殊含義的標(biāo)識符。共 25 個。

四、認(rèn)證體系

CKA: Kubernetes 管理員認(rèn)證(CKA)旨在確保認(rèn)證持有者具備履行 Kubernetes 管理員職責(zé)的技能,知識和能力。CKA 認(rèn)證可幫助經(jīng)過認(rèn)證的管理員在就業(yè)市場中快速建立自己的信譽和價值,并能幫助公司更快地雇用高質(zhì)量的團隊來支持他們的發(fā)展

如果企業(yè)想要申請 KCSP,條件之一是:至少需要三名員工擁有 CKA 認(rèn)證

CKAD: Kubernetes 應(yīng)用程序開發(fā)人員認(rèn)證(CKAD)旨在確保 CKAD 具備履行 Kubernetes 應(yīng)用程序開發(fā)人員職責(zé)的技能,知識和能力。 經(jīng)過認(rèn)證的 Kubernetes Application Developer 可以定義應(yīng)用程序資源并使用核心原語來構(gòu)建,監(jiān)視和排除 Kubernetes 中可伸縮應(yīng)用程序和工具的故障

全套視頻教程+筆記

配套技術(shù)文檔

大廠面試題匯總

實戰(zhàn)項目

最后把我整理的關(guān)于 go 的電子書在這里分享給大家,這些資料用于學(xué)習(xí)分享,請勿用于商業(yè)目的。需要獲取的話點擊領(lǐng)取就可以了

資料包icon-default.png?t=M85Bhttps://docs.qq.com/doc/DZFR4THdNS1lieXRI?&u=51169acf38a94deebd6f04d8f678a917

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標(biāo)題:為什么我們要學(xué)go語言?go語言的優(yōu)勢-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://www.chinadenli.net/article18/cesddp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站動態(tài)網(wǎng)站標(biāo)簽優(yōu)化響應(yīng)式網(wǎng)站品牌網(wǎng)站建設(shè)移動網(wǎng)站建設(shè)

廣告

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

成都定制網(wǎng)站網(wǎng)頁設(shè)計