真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

創(chuàng)造go語言的3劍客 go語言是誰開發(fā)的

Go語言int、int64、string之間的轉(zhuǎn)換

import "strconv"

站在用戶的角度思考問題,與客戶深入溝通,找到東烏珠穆沁網(wǎng)站設(shè)計(jì)與東烏珠穆沁網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋東烏珠穆沁地區(qū)。

int, err := strconv.Atoi(string)

int64, err := strconv.ParseInt(string, 10, 64)

string := strconv.Itoa(int)

string := strconv.FormatInt(int64,15)

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

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

例子

FIFO Stack

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

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

泛型通過允許類型具有類型參數(shù)來解決此問題:

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)

}

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

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

為什么要使用 Go 語言?Go 語言的優(yōu)勢在哪里

1、學(xué)習(xí)曲線

它包含了類C語法、GC內(nèi)置和工程工具。這一點(diǎn)非常重要,因?yàn)镚o語言容易學(xué)習(xí),所以一個(gè)普通的大學(xué)生花一個(gè)星期就能寫出來可以上手的、高性能的應(yīng)用。在國內(nèi)大家都追求快,這也是為什么國內(nèi)Go流行的原因之一。

2、效率

Go擁有接近C的運(yùn)行效率和接近PHP的開發(fā)效率,這就很有利的支撐了上面大家追求快速的需求。

3、出身名門、血統(tǒng)純正

之所以說Go語言出身名門,是因?yàn)槲覀冎繥o語言出自Google公司,這個(gè)公司在業(yè)界的知名度和實(shí)力自然不用多說。Google公司聚集了一批牛人,在各種編程語言稱雄爭霸的局面下推出新的編程語言,自然有它的戰(zhàn)略考慮。而且從Go語言的發(fā)展態(tài)勢來看,Google對它這個(gè)新的寵兒還是很看重的,Go自然有一個(gè)良好的發(fā)展前途。我們看看Go語言的主要創(chuàng)造者,血統(tǒng)純正這點(diǎn)就可見端倪了。

4、組合的思想、無侵入式的接口

Go語言可以說是開發(fā)效率和運(yùn)行效率二者的完美融合,天生的并發(fā)編程支持。Go語言支持當(dāng)前所有的編程范式,包括過程式編程、面向?qū)ο缶幊桃约昂瘮?shù)式編程。

5、強(qiáng)大的標(biāo)準(zhǔn)庫

這包括互聯(lián)網(wǎng)應(yīng)用、系統(tǒng)編程和網(wǎng)絡(luò)編程。Go里面的標(biāo)準(zhǔn)庫基本上已經(jīng)是非常穩(wěn)定,特別是我這里提到的三個(gè),網(wǎng)絡(luò)層、系統(tǒng)層的庫非常實(shí)用。

6、部署方便

我相信這一點(diǎn)是很多人選擇Go的最大理由,因?yàn)椴渴鹛奖?,所以現(xiàn)在也有很多人用Go開發(fā)運(yùn)維程序。

7、簡單的并發(fā)

它包含降低心智的并發(fā)和簡易的數(shù)據(jù)同步,我覺得這是Go最大的特色。之所以寫正確的并發(fā)、容錯(cuò)和可擴(kuò)展的程序如此之難,是因?yàn)槲覀冇昧隋e(cuò)誤的工具和錯(cuò)誤的抽象,Go可以說這一塊做的相當(dāng)簡單。

8、穩(wěn)定性

Go擁有強(qiáng)大的編譯檢查、嚴(yán)格的編碼規(guī)范和完整的軟件生命周期工具,具有很強(qiáng)的穩(wěn)定性,穩(wěn)定壓倒一切。那么為什么Go相比于其他程序會更穩(wěn)定呢?這是因?yàn)镚o提供了軟件生命周期的各個(gè)環(huán)節(jié)的工具,如go

tool、gofmt、go test。

go語言適合做什么?

Go語言。他主要是在一些網(wǎng)頁版的服務(wù)器中用于系統(tǒng)編程的一種語言。他是谷歌開發(fā)的一種編程語言。在一定程度上,谷歌有一定的壟斷作用。不能隨隨便便的在語言當(dāng)中添加其他的語言成分。


文章題目:創(chuàng)造go語言的3劍客 go語言是誰開發(fā)的
網(wǎng)站鏈接:http://weahome.cn/article/dddoegj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部