怎樣才算熟悉GO?

經(jīng)過(guò)參加一些面試之后饱狂,個(gè)人的一些理解曹步。其實(shí)這些知識(shí)點(diǎn)都懂,但是很少有機(jī)會(huì)描述休讳,所以面試的時(shí)候一問(wèn)就描述不清楚了讲婚,所以寫(xiě)一篇博客組織下自己的語(yǔ)言,能夠清楚表述俊柔。也是慚愧筹麸,這些很基礎(chǔ)的東西,我竟然沒(méi)有經(jīng)常復(fù)習(xí)雏婶。

---更新 2019年07月04日

GO關(guān)鍵字有哪些物赶?(至少應(yīng)該是要倒背如流吧)
GO內(nèi)置函數(shù)有哪些?(至少應(yīng)該是要倒背入流吧)
能清楚的描述每個(gè)關(guān)鍵字和內(nèi)置函數(shù)的作用以及一些場(chǎng)景留晚?
defer酵紫?
new和make的區(qū)別?
panic和error的區(qū)別错维?
無(wú)緩沖和有緩沖的區(qū)別奖地?
unsafe.Pointer和uintptr的區(qū)別?
GO應(yīng)用反射場(chǎng)景赋焕?
CGO編程参歹?

GO關(guān)鍵字?
GO的關(guān)鍵字一共25個(gè)隆判,但是就25個(gè)就足夠完成現(xiàn)在編程的一切所需犬庇,當(dāng)你分析每個(gè)關(guān)鍵字結(jié)合當(dāng)下的編程所需的時(shí)候僧界,就會(huì)發(fā)現(xiàn)GO的設(shè)計(jì)就是一件藝術(shù)品,不多不少臭挽。
包管理:package捎泻、import
變量:var、interface埋哟、struct笆豁、map、type
常量:const
函數(shù):func赤赊、return闯狱、defer
循環(huán):for、continue抛计、break哄孤、range、if吹截、else瘦陈、switch、case波俄、default晨逝、fallthrough、goto
并發(fā):go懦铺、chan捉貌、select
對(duì)于包管理的話(huà),有package冬念、import趁窃,對(duì)于變量的話(huà)有var、interface急前、struct醒陆、map,類(lèi)型定義有type裆针。常量的話(huà)有const刨摩。函數(shù)的話(huà)有func、return据块、defer码邻。循環(huán)的話(huà)折剃,go中的for具有c語(yǔ)言中for+break的所有功能另假,用一個(gè)for完成循環(huán),更加簡(jiǎn)潔怕犁,if边篮、else己莺、switch、case戈轿、default凌受、fallthrough來(lái)完成選擇。

GO內(nèi)置函數(shù)思杯?
new胜蛉、make、append色乾、copy誊册、delete、close暖璧、len案怯、cap、panic澎办、recover

可以將內(nèi)置函數(shù)進(jìn)行分類(lèi)嘲碱,可以得出以下幾個(gè)分類(lèi):
1)新建:new、make
2)添加:append
3)復(fù)制:copy
4)刪除:delete
5)關(guān)閉:close
6)計(jì)算長(zhǎng)度:len局蚀、cap
7)異常處理:panic麦锯、recover

從上面三個(gè)分類(lèi)中,出現(xiàn)了有2個(gè)內(nèi)置函數(shù)琅绅,說(shuō)明要區(qū)分這兩個(gè)函數(shù)的不同离咐。
(1)new和make的區(qū)別?
第一個(gè)區(qū)別:針對(duì)對(duì)象不同奉件,new的傳入是可以任意類(lèi)型的宵蛀,make的傳入類(lèi)型只能是slice、map县貌、chan
第二個(gè)區(qū)別:返回對(duì)象不同术陶,new返回的是一個(gè)指針,make返回的是引用
第三個(gè)區(qū)別:操作不同煤痕,對(duì)于slice梧宫、map、chan來(lái)說(shuō)摆碉,new只為對(duì)象分配內(nèi)存塘匣,make是為對(duì)象分配內(nèi)存和初始化操作
(2)len和cap的區(qū)別?
第一個(gè)區(qū)別:傳入對(duì)象不同巷帝,len可以是string忌卤、slice、map楞泼、chan驰徊,但是cap只能是slice
第二個(gè)區(qū)別:功能不同笤闯,len是計(jì)算已用長(zhǎng)度,cap是計(jì)算對(duì)象分配的容量
(3)panic和error的場(chǎng)景棍厂?
panic是用來(lái)處理異常情況颗味,error是用來(lái)處理錯(cuò)誤情況,什么是異常牺弹?什么是錯(cuò)誤浦马?異常就是你知道會(huì)出現(xiàn)錯(cuò)誤,但是你不知道是什么錯(cuò)张漂。錯(cuò)誤就是你知道會(huì)發(fā)生什么錯(cuò)捐韩,這是這兩者之間的區(qū)別。

無(wú)緩沖和有緩沖的區(qū)別鹃锈?
無(wú)緩沖的話(huà)荤胁,向這個(gè)channel寫(xiě)入之后,如果再向這個(gè)寫(xiě)滿(mǎn)的channel寫(xiě)入數(shù)據(jù)的話(huà)屎债,會(huì)被一直阻塞仅政,直到有一個(gè)協(xié)程去讀取channel。
有緩沖的話(huà)盆驹,只有向channel寫(xiě)滿(mǎn)的情況下寫(xiě)入才會(huì)造成阻塞的情況
無(wú)緩沖:
c := make(chan int, 0)等價(jià)
c := make(chan int)
有緩沖:
c := make(chan int, n) // n > 0
說(shuō)明:無(wú)緩沖make(chan int)和有緩沖make(chan int, 1)的區(qū)別
向make(chan int)放入一個(gè)值的時(shí)候圆丹,就會(huì)被阻塞,直到其他地方有從這個(gè)無(wú)緩沖中讀取內(nèi)容為止躯喇。而向make(chan int, 1)里面放入一個(gè)值的時(shí)候辫封,不會(huì)立即阻塞,直到后面這邊滿(mǎn)為止廉丽,再向里面放一個(gè)值時(shí)才會(huì)阻塞倦微。

defer功能和使用場(chǎng)合?
defer用于退出執(zhí)行正压,比如打開(kāi)文件之后欣福,需要關(guān)閉,以及打開(kāi)數(shù)據(jù)庫(kù)之類(lèi)的操作焦履,主要是應(yīng)對(duì)在操作過(guò)程中遇到某些情況拓劝,如需要返回錯(cuò)誤或發(fā)生panic的時(shí)候,關(guān)閉操作依然能被執(zhí)行嘉裤,關(guān)于defer的效率問(wèn)題郑临,可以看我的另一篇博客:,defer對(duì)程序的效率影響可以忽略不計(jì)屑宠。

unsafe.Pointer和uintptr的區(qū)別厢洞?
go指針詳情可以參考我的博客文章:http://www.reibang.com/writer#/notebooks/28359403/notes/33744906
區(qū)別一:功能不同,unsafe.Pointer不能進(jìn)行指針運(yùn)算,用于充當(dāng)普通指針和uintptr的轉(zhuǎn)換橋梁犀变,uintptr可以進(jìn)行指針運(yùn)算
區(qū)別二:實(shí)質(zhì)不同,GC將unsafe.Pointer看成一個(gè)指針引用总珠,uintptr不被GC當(dāng)成指針睦授,也就是當(dāng)一個(gè)地址被uintptr指向外志电,沒(méi)有被其他所指向,則會(huì)被GC回收省店。

GO應(yīng)用反射場(chǎng)景?
有兩種情況:
1)不知道接口調(diào)用哪個(gè)函數(shù)笨触,根據(jù)傳入?yún)?shù)在運(yùn)行時(shí)確定調(diào)用的具體接口懦傍,這種需要對(duì)函數(shù)或方法反射。例如:橋接模式芦劣。
2)不知道傳入函數(shù)的參數(shù)類(lèi)型粗俱,函數(shù)需要在運(yùn)行時(shí)處理時(shí)任意參數(shù)對(duì)象,這種需要對(duì)結(jié)構(gòu)體對(duì)象反射虚吟。例如ORM寸认。
from大佬:https://yq.aliyun.com/articles/599584

關(guān)鍵字:
1)package 進(jìn)行包命名
2)import 引入包
3)var 用于聲明變量
4)interface:兩個(gè)功能,第一個(gè)功能被用于無(wú)類(lèi)型變量串慰,能夠接收不同類(lèi)型的變量偏塞,第二個(gè)功能是用于定于接口
5)struct 用于定義結(jié)構(gòu)體(類(lèi))
6)const 定義常量
7)map 映射

內(nèi)置函數(shù):

iota 類(lèi)似枚舉,開(kāi)始的時(shí)候?yàn)?邦鲫,然后遞增灸叼,如果遇到const的話(huà),則重新開(kāi)始

將自己的知識(shí)分享出來(lái)之后庆捺,有得有失古今,失去的是自己的優(yōu)勢(shì)沒(méi)了,但是從長(zhǎng)遠(yuǎn)的眼光看的話(huà)滔以,這種優(yōu)勢(shì)反而不利于自己的成長(zhǎng)沧卢。得到的是,心理就被迫要學(xué)習(xí)新的知識(shí)醉者,被迫的去深入理解更加復(fù)雜的知識(shí)但狭,讓自己不斷突破了自我。

當(dāng)我總結(jié)完撬即,發(fā)現(xiàn)我當(dāng)時(shí)面試的時(shí)候說(shuō)的都是些什么啊立磁。。剥槐。
加油:現(xiàn)在離精通和深入理解又更進(jìn)了一步

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唱歧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颅崩,老刑警劉巖几于,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沿后,居然都是意外死亡沿彭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)尖滚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喉刘,“玉大人,你說(shuō)我怎么就攤上這事漆弄∧郎眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵撼唾,是天一觀的道長(zhǎng)廉邑。 經(jīng)常有香客問(wèn)我,道長(zhǎng)倒谷,這世上最難降的妖魔是什么鬓催? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮恨锚,結(jié)果婚禮上宇驾,老公的妹妹穿的比我還像新娘。我一直安慰自己猴伶,他們只是感情好课舍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著他挎,像睡著了一般筝尾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上办桨,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天筹淫,我揣著相機(jī)與錄音,去河邊找鬼呢撞。 笑死损姜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的殊霞。 我是一名探鬼主播摧阅,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼绷蹲!你這毒婦竟也來(lái)了棒卷?” 一聲冷哼從身側(cè)響起顾孽,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎比规,沒(méi)想到半個(gè)月后若厚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜒什,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年测秸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吃谣。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乞封,死狀恐怖做裙,靈堂內(nèi)的尸體忽然破棺而出岗憋,到底是詐尸還是另有隱情,我是刑警寧澤锚贱,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布仔戈,位于F島的核電站,受9級(jí)特大地震影響拧廊,放射性物質(zhì)發(fā)生泄漏监徘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一吧碾、第九天 我趴在偏房一處隱蔽的房頂上張望凰盔。 院中可真熱鬧,春花似錦倦春、人聲如沸户敬。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尿庐。三九已至,卻和暖如春呢堰,著一層夾襖步出監(jiān)牢的瞬間抄瑟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工枉疼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留皮假,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓骂维,卻偏偏與公主長(zhǎng)得像钞翔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子席舍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容