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

go語(yǔ)言三大缺點(diǎn),go語(yǔ)言的缺點(diǎn)

GO語(yǔ)言和C++比優(yōu)缺點(diǎn)在那?

C++適合本地程序的開(kāi)發(fā)。Go語(yǔ)言適合網(wǎng)絡(luò)程序和本地程序的開(kāi)發(fā)。Go的優(yōu)點(diǎn):垃圾回收,語(yǔ)意明確,格式統(tǒng)一。?Go的缺點(diǎn):效率目前沒(méi)有C++高,但對(duì)于桌面程序而言,效率問(wèn)題不大,因?yàn)橛布呀?jīng)很快了。c++過(guò)于復(fù)雜了,加入很多炫技的內(nèi)容。這些內(nèi)容脫離了事情的本質(zhì)。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)環(huán)江,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

最明顯的就是所謂的面向?qū)ο蟆;诿嫦驅(qū)ο蟮墓こ倘绻銐虼蟮那闆r下,會(huì)帶來(lái)很大的耦合度,如果再加上內(nèi)存管理,多線程等等。項(xiàng)目后期基本上沒(méi)辦法維護(hù)和增加功能。

關(guān)于c++的語(yǔ)言復(fù)雜性,你可以問(wèn)知乎上的任何一位高手。沒(méi)一個(gè)敢說(shuō)自己精通c++。你也可以去看一下所有的c++編繹器,沒(méi)有任何一個(gè)敢說(shuō)自己完全實(shí)現(xiàn)了c++的標(biāo)準(zhǔn)。不同的編繹器之間實(shí)現(xiàn)細(xì)節(jié)又不同。所以功能再?gòu)?qiáng)大沒(méi)有實(shí)用性,就失去了意義,只會(huì)制造更多的問(wèn)題。

如何看待go語(yǔ)言泛型的最新設(shè)計(jì)?

Go 由于不支持泛型而臭名昭著,但最近,泛型已接近成為現(xiàn)實(shí)。Go 團(tuán)隊(duì)實(shí)施了一個(gè)看起來(lái)比較穩(wěn)定的設(shè)計(jì)草案,并且正以源到源翻譯器原型的形式獲得關(guān)注。本文講述的是泛型的最新設(shè)計(jì),以及如何自己嘗試泛型。

例子

FIFO Stack

假設(shè)你要?jiǎng)?chuàng)建一個(gè)先進(jìn)先出堆棧。沒(méi)有泛型,你可能會(huì)這樣實(shí)現(xiàn):

type?Stack?[]interface{}func?(s?Stack)?Peek()?interface{}?{

return?s[len(s)-1]

}

func?(s?*Stack)?Pop()?{

*s?=?(*s)[:

len(*s)-1]

}

func?(s?*Stack)?Push(value?interface{})?{

*s?=?

append(*s,?value)

}

但是,這里存在一個(gè)問(wèn)題:每當(dāng)你 Peek 項(xiàng)時(shí),都必須使用類型斷言將其從 interface{} 轉(zhuǎn)換為你需要的類型。如果你的堆棧是 *MyObject 的堆棧,則意味著很多 s.Peek().(*MyObject)這樣的代碼。這不僅讓人眼花繚亂,而且還可能引發(fā)錯(cuò)誤。比如忘記 * 怎么辦?或者如果您輸入錯(cuò)誤的類型怎么辦?s.Push(MyObject{})` 可以順利編譯,而且你可能不會(huì)發(fā)現(xiàn)到自己的錯(cuò)誤,直到它影響到你的整個(gè)服務(wù)為止。

通常,使用 interface{} 是相對(duì)危險(xiǎn)的。使用更多受限制的類型總是更安全,因?yàn)榭梢栽诰幾g時(shí)而不是運(yùn)行時(shí)發(fā)現(xiàn)問(wèn)題。

泛型通過(guò)允許類型具有類型參數(shù)來(lái)解決此問(wèn)題:

type?Stack(type?T)?[]Tfunc?(s?Stack(T))?Peek()?T?{

return?s[len(s)-1]

}

func?(s?*Stack(T))?Pop()?{

*s?=?(*s)[:

len(*s)-1]

}

func?(s?*Stack(T))?Push(value?T)?{

*s?=?

append(*s,?value)

}

這會(huì)向 Stack 添加一個(gè)類型參數(shù),從而完全不需要 interface{}。現(xiàn)在,當(dāng)你使用 Peek() 時(shí),返回的值已經(jīng)是原始類型,并且沒(méi)有機(jī)會(huì)返回錯(cuò)誤的值類型。這種方式更安全,更容易使用。(譯注:就是看起來(lái)更丑陋,^-^)

此外,泛型代碼通常更易于編譯器優(yōu)化,從而獲得更好的性能(以二進(jìn)制大小為代價(jià))。如果我們對(duì)上面的非泛型代碼和泛型代碼進(jìn)行基準(zhǔn)測(cè)試,我們可以看到區(qū)別:

type?MyObject?struct?{

X?

int

}

var?sink?MyObjectfunc?BenchmarkGo1(b?*testing.B)?{

for?i?:=?0;?i??b.N;?i++?{

var?s?Stack

s.Push(MyObject{})

s.Push(MyObject{})

s.Pop()

sink?=?s.Peek().(MyObject)

}

}

func?BenchmarkGo2(b?*testing.B)?{

for?i?:=?0;?i??b.N;?i++?{

var?s?Stack(MyObject)

s.Push(MyObject{})

s.Push(MyObject{})

s.Pop()

sink?=?s.Peek()

}

}

結(jié)果:

BenchmarkGo1BenchmarkGo1-16?????12837528?????????87.0?ns/op???????48?B/op????????2?allocs/opBenchmarkGo2BenchmarkGo2-16?????28406479?????????41.9?ns/op???????24?B/op????????2?allocs/op

在這種情況下,我們分配更少的內(nèi)存,同時(shí)泛型的速度是非泛型的兩倍。

合約(Contracts)

上面的堆棧示例適用于任何類型。但是,在許多情況下,你需要編寫僅適用于具有某些特征的類型的代碼。例如,你可能希望堆棧要求類型實(shí)現(xiàn) String() 函數(shù)

golang做后臺(tái)開(kāi)發(fā)有什么優(yōu)勢(shì)和劣勢(shì)

golang在近些年被追捧,不管某華,某阿在很多服務(wù)器開(kāi)發(fā)上都在使用。

你不用懷疑golang的

優(yōu)勢(shì):部署簡(jiǎn)單,良好的語(yǔ)言設(shè)計(jì),并發(fā)性好,性能優(yōu)良,開(kāi)發(fā)簡(jiǎn)潔快,標(biāo)準(zhǔn)庫(kù)強(qiáng)大,編譯簡(jiǎn)單

缺點(diǎn):還存在一些缺陷(例如垃圾回收),缺少安全檢查,性能方面目前比不過(guò)java,第三方庫(kù)不及java

但作為新興語(yǔ)種,我們不用擔(dān)心,背后有谷歌支持和java持平也就是時(shí)間上的問(wèn)題。

而且前面還有某華,某阿頂著不怕。

為什么 Go 語(yǔ)言的性能還不如java

Go語(yǔ)言自亮相以來(lái)并沒(méi)有展示一個(gè)明確的方向,Google員工將Go語(yǔ)言稱為一個(gè)“試驗(yàn)性語(yǔ)言”,稱其試圖融合Python等動(dòng)態(tài)語(yǔ)言的開(kāi)發(fā)速度和C或C++等編譯語(yǔ)言的性能和安全。一位Go語(yǔ)言的支持者概括而言Go語(yǔ)言如下:簡(jiǎn)單、快速、安全、并發(fā)、快樂(lè)編程、開(kāi)源;但Go語(yǔ)言缺乏方向以及其“集大成者”的嘗試很容易會(huì)導(dǎo)致其學(xué)貓不成學(xué)狗也不成,淪為四不像。盡管如此,編者仍然覺(jué)得Go語(yǔ)言有相當(dāng)大的潛力:很多開(kāi)發(fā)者對(duì)它感興趣——不僅它的最初設(shè)計(jì)者陣容強(qiáng)大,而且在參與修改源代碼的人群中也不乏大牛級(jí)人物。這很有可能幫助Go語(yǔ)言找到適合自己的方向,開(kāi)拓系統(tǒng)編程的新方向。

分享文章:go語(yǔ)言三大缺點(diǎn),go語(yǔ)言的缺點(diǎn)
網(wǎng)頁(yè)路徑:http://chinadenli.net/article38/hsggsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)自適應(yīng)網(wǎng)站小程序開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)Google面包屑導(dǎo)航

廣告

聲明:本網(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)

成都網(wǎng)站建設(shè)公司