之所以會(huì)寫這篇文章,是因?yàn)樵谧詫W(xué) Go 語(yǔ)言的過(guò)程,總會(huì)有些困惑和迷茫,總希望更好地學(xué)習(xí)下去,因此有了一些想法,在這里梳理一下,以便日后回過(guò)頭來(lái)也可以看看此時(shí)此刻的想法。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括察布查爾錫伯網(wǎng)站建設(shè)、察布查爾錫伯網(wǎng)站制作、察布查爾錫伯網(wǎng)頁(yè)制作以及察布查爾錫伯網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,察布查爾錫伯網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到察布查爾錫伯省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!一.?Go 語(yǔ)言的出現(xiàn)
在具體學(xué)習(xí) go 語(yǔ)言的基礎(chǔ)語(yǔ)法之前,我們來(lái)了解一下 go 語(yǔ)言出現(xiàn)的時(shí)機(jī)及其特點(diǎn)。
Go 語(yǔ)言最初由 Google 公司的 Robert Griesemer、Ken Thompson 和 Rob Pike 三個(gè)大牛于 2007 年開(kāi)始設(shè)計(jì)發(fā)明,他們最終的目標(biāo)是設(shè)計(jì)一種適應(yīng)網(wǎng)絡(luò)和多核時(shí)代的 C 語(yǔ)言。所以 Go 語(yǔ)言很多時(shí)候被描述為“類 C 語(yǔ)言”,或者是“21 世紀(jì)的 C 語(yǔ)言”,當(dāng)然從各種角度看,Go 語(yǔ)言確實(shí)是從 C 語(yǔ)言繼承了相似的表達(dá)式語(yǔ)法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等諸多編程思想。但是 Go 語(yǔ)言更是對(duì) C 語(yǔ)言最徹底的一次揚(yáng)棄,它舍棄了 C 語(yǔ)言中靈活但是危險(xiǎn)的指針運(yùn)算,還重新設(shè)計(jì)了 C 語(yǔ)言中部分不太合理運(yùn)算符的優(yōu)先級(jí),并在很多細(xì)微的地方都做了必要的打磨和改變。
Go 語(yǔ)言其實(shí)是 Golanguage 的簡(jiǎn)稱,Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開(kāi)發(fā)的一種靜態(tài)強(qiáng)類型、編譯并發(fā)型語(yǔ)言。Go 語(yǔ)言語(yǔ)法與 C 相近,但功能上有:內(nèi)存安全,GC(垃圾回收),結(jié)構(gòu)形態(tài)及 CSP-style 并發(fā)計(jì)算。該語(yǔ)言的吉祥物為金花鼠(gordon),如下圖所示。
二、G 語(yǔ)言的理論學(xué)習(xí)
1、go 接口
所有接口的父接口是一個(gè)空類,interface{}替代任意類型
2、go 泛型
go1.7 之前的 go 泛型實(shí)現(xiàn)是使用 interface{}替代任意類型,需要使用 swich 做類型斷言判斷。1.7 之后引入了類似 java 語(yǔ)言的泛型概念,這種泛型概念就是模板
3、o 引用類型
切片、map(字典)、channel(管道),接口,指針 這五種在 go 中是引用類型,其余類型為值類型。引用類型的引用存在內(nèi)存棧中,值存在堆內(nèi)存中。go 垃圾回收器 GC 回收的是堆內(nèi)存中沒(méi)有引用的空間。也就是說(shuō)引用類型若要回收時(shí)只需要將引用指向 nil 即可。
在變量傳遞(函數(shù)傳參)時(shí),值類型數(shù)據(jù)是拷貝專遞。引用類型是地址傳遞,在函數(shù)傳參時(shí),如果是值傳遞,修改被傳遞的參數(shù)不會(huì)影響原有變量,如果是引用傳遞,函數(shù)內(nèi)部修改會(huì)影響外界。
4、切片和數(shù)組的顯著區(qū)別
切片是一個(gè)引用類型,數(shù)組是一個(gè)值類型。數(shù)組一旦創(chuàng)建大小是固定的。切片底層也是數(shù)據(jù),切片在運(yùn)行時(shí)可以動(dòng)態(tài)增加大小。切片是可以動(dòng)態(tài)雙倍擴(kuò)容的,使用的是數(shù)組內(nèi)置的添加,復(fù)制功能。
切片的方法
len() 返回切片中元素的個(gè)數(shù)
cap() 返回切片的容量
5、go 語(yǔ)言中的列表和字典
列表:list.List ; 聲明:var name list.List? ? or? ? ?name := list.List。列表的底層數(shù)據(jù)結(jié)構(gòu)是雙向鏈表。
字典:map,提供映射關(guān)系的容器,其內(nèi)部是通過(guò)散列表實(shí)現(xiàn)的
6、go select
select 可以隨機(jī)選擇一條 channel 沒(méi)有讀寫阻塞的 case 執(zhí)行。實(shí)際上就是找到?jīng)]有阻塞的 channel。
7、一個(gè)協(xié)程如何等其余協(xié)程執(zhí)行完成之后再執(zhí)行
? 等待組:sync.WaitGroup。在等待預(yù)設(shè)數(shù)量的協(xié)程都執(zhí)行并且結(jié)束后,才會(huì)向下執(zhí)行。
? waitGroup.add(5) //設(shè)置執(zhí)行的協(xié)程數(shù)
? waitGroup.Done()//一個(gè)協(xié)程執(zhí)行完成后減一的動(dòng)作
? waitGroup.wait()//等待協(xié)程等待
? 另一種辦法:給一個(gè)共用參數(shù)(切片)等待攜程看這個(gè)共用參數(shù)信號(hào)確定是否執(zhí)行
8、死鎖
死鎖:主協(xié)程被阻塞
避免方式:
不能單個(gè)協(xié)程自讀自寫一個(gè)沒(méi)有緩沖能力的 channel
A 協(xié)程要求 B 協(xié)程先寫入自己在讀出,B 協(xié)程要求 A 協(xié)程先讀出自己再寫入。此時(shí) AB 死鎖
在 range channel 時(shí),要注意 channel 的寫入關(guān)閉,如果不關(guān)閉管道,range channel 就永遠(yuǎn)阻塞
9、go 的 channel 有緩沖和沒(méi)緩沖的區(qū)別
有緩沖的管道:即使沒(méi)有寫入,也能讀出若干默認(rèn)值。即使沒(méi)有讀出,也能寫入若干值。
無(wú)緩沖的管道:只要沒(méi)有協(xié)程寫入就讀出阻塞。沒(méi)有協(xié)程讀出,就寫入阻塞。
10、go 為啥可以高并發(fā)
G-M-P 模型
當(dāng)一個(gè)線程運(yùn)行在某一個(gè) cpu 的核上,這個(gè)線程下可能會(huì)有很多個(gè)協(xié)程(微協(xié)程),當(dāng)前有其中一個(gè)協(xié)程處于運(yùn)行狀態(tài),其余的在協(xié)程隊(duì)列中排隊(duì)等待。
實(shí)際 M(物理線程)之間的調(diào)度是在操作系統(tǒng)上完成的,效率低下。go 則是一個(gè) M(物理態(tài)線程)下掛有一個(gè)邏輯態(tài)的協(xié)程隊(duì)列,其調(diào)度是邏輯調(diào)度,不在操作系統(tǒng)層面調(diào)度。則效率高。
三、GO 語(yǔ)言的技能學(xué)習(xí)
GO 標(biāo)識(shí)符 關(guān)鍵字 變量 常量
標(biāo)識(shí)符
標(biāo)識(shí)符是指 Go 語(yǔ)言對(duì)各種變量、方法、函數(shù)等命名時(shí)使用的字符序列,標(biāo)識(shí)符由若干個(gè)字母、下劃線_、和數(shù)字組成,且第一個(gè)字符必須是字母。通俗的講就是凡可以自己定義的名稱都可以叫做標(biāo)識(shí)符。
下劃線_是一個(gè)特殊的標(biāo)識(shí)符,稱為空白標(biāo)識(shí)符,它可以像其他標(biāo)識(shí)符那樣用于變量的聲明或賦值(任何類型都可以賦值給它),但任何賦給這個(gè)標(biāo)識(shí)符的值都將被拋棄,因此這些值不能在后續(xù)的代碼中使用,也不可以使用_作為變量對(duì)其它變量進(jìn)行賦值或運(yùn)算。
在使用標(biāo)識(shí)符之前必須進(jìn)行聲明,聲明一個(gè)標(biāo)識(shí)符就是將這個(gè)標(biāo)識(shí)符與常量、類型、變量、函數(shù)或者代碼包綁定在一起。在同一個(gè)代碼塊內(nèi)標(biāo)識(shí)符的名稱不能重復(fù)。
標(biāo)識(shí)符的命名需要遵守以下規(guī)則:
a. 由 26 個(gè)英文字母、0~9、_組成;
b. 不能以數(shù)字開(kāi)頭,例如 var 1num int 是錯(cuò)誤的;
c. Go 語(yǔ)言中嚴(yán)格區(qū)分大小寫;
d. 標(biāo)識(shí)符不能包含空格;
d. 不能以系統(tǒng)保留關(guān)鍵字作為標(biāo)識(shí)符,比如 break,if 等等。
命名標(biāo)識(shí)符時(shí)還需要注意以下幾點(diǎn):
a. 標(biāo)識(shí)符的命名要盡量采取簡(jiǎn)短且有意義;
b. 不能和標(biāo)準(zhǔn)庫(kù)中的包名重復(fù);
c. 為變量、函數(shù)、常量命名時(shí)采用駝峰命名法,例如 stuName、getVal;
當(dāng)然 Go 語(yǔ)言中的變量、函數(shù)、常量名稱的首字母也可以大寫,如果首字母大寫,則表示它可以被其它的包訪問(wèn)(類似于 Java 中的 public);如果首字母小寫,則表示它只能在本包中使用 (類似于 Java 中 private)。
在 Go 語(yǔ)言中還存在著一些特殊的標(biāo)識(shí)符,叫做預(yù)定義標(biāo)識(shí)符,如下表所示:
預(yù)定義標(biāo)識(shí)符一共有 36 個(gè),主要包含 Go 語(yǔ)言中的基礎(chǔ)數(shù)據(jù)類型和內(nèi)置函數(shù),這些預(yù)定義標(biāo)識(shí)符也不可以當(dāng)做標(biāo)識(shí)符來(lái)使用。
關(guān)鍵字
關(guān)鍵字是 Go 語(yǔ)?預(yù)先定義好的,有特殊含義的標(biāo)識(shí)符。共 25 個(gè)。
四、認(rèn)證體系
CKA: Kubernetes 管理員認(rèn)證(CKA)旨在確保認(rèn)證持有者具備履行 Kubernetes 管理員職責(zé)的技能,知識(shí)和能力。CKA 認(rèn)證可幫助經(jīng)過(guò)認(rèn)證的管理員在就業(yè)市場(chǎng)中快速建立自己的信譽(yù)和價(jià)值,并能幫助公司更快地雇用高質(zhì)量的團(tuán)隊(duì)來(lái)支持他們的發(fā)展
如果企業(yè)想要申請(qǐng) KCSP,條件之一是:至少需要三名員工擁有 CKA 認(rèn)證
CKAD: Kubernetes 應(yīng)用程序開(kāi)發(fā)人員認(rèn)證(CKAD)旨在確保 CKAD 具備履行 Kubernetes 應(yīng)用程序開(kāi)發(fā)人員職責(zé)的技能,知識(shí)和能力。 經(jīng)過(guò)認(rèn)證的 Kubernetes Application Developer 可以定義應(yīng)用程序資源并使用核心原語(yǔ)來(lái)構(gòu)建,監(jiān)視和排除 Kubernetes 中可伸縮應(yīng)用程序和工具的故障
全套視頻教程+筆記
配套技術(shù)文檔
大廠面試題匯總
實(shí)戰(zhàn)項(xiàng)目
最后把我整理的關(guān)于 go 的電子書(shū)在這里分享給大家,這些資料用于學(xué)習(xí)分享,請(qǐng)勿用于商業(yè)目的。需要獲取的話點(diǎn)擊領(lǐng)取就可以了
資料包https://docs.qq.com/doc/DZFR4THdNS1lieXRI?&u=51169acf38a94deebd6f04d8f678a917
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)標(biāo)題:為什么我們要學(xué)go語(yǔ)言?go語(yǔ)言的優(yōu)勢(shì)-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://vcdvsql.cn/article18/cesddp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容