成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

愛上 Go 語言的10個(gè)理由

開發(fā) 后端
這個(gè)月 Go 語言就將迎來它的10歲生日了,于是我們特地列出了10條讓你可以開心使用 Go 語言的理由。

 這個(gè)月 Go 語言就將迎來它的10歲生日了,于是我們特地列出了10條讓你可以開心使用 Go 語言的理由。

 

 

[[282093]]

Map 集合/映射默認(rèn)使用0值

在 Go 中使用映射時(shí),即使你尚未為特定的鍵插入任何值,也可以查詢?cè)撴I,并且它所對(duì)應(yīng)的值為0還不是nil,除非存儲(chǔ)的是指針。

因此如果你有這樣一個(gè)映射 m:=map[string]int然后你想得到 m["hello"],返回的結(jié)果將是 0,即使該位置并沒有值。

這允許我們寫代碼時(shí)不需要再檢查該鍵是否存在,從而使代碼更加整潔。想象如果我們想要保存某個(gè)字符串中一個(gè)字符出現(xiàn)的頻率,我們只需要這樣做:

  1. func count(input string) (map[string]int) { m := map[string]int{}for _,s := range input { m[string(s)]++ // 這一步永遠(yuǎn)都會(huì)是安全的}return m} 

上面的代碼中,我們無需在遞增之前事先判斷該鍵是否已經(jīng)有值。

不變值

默認(rèn)情況下,當(dāng)向一個(gè)方法或者函數(shù)傳遞值時(shí),你無法對(duì)它進(jìn)行更改。當(dāng)你確實(shí)需要更改這個(gè)值時(shí),你需要向這個(gè)值傳遞一個(gè)指針。它不像 Rust 那么嚴(yán)格,后者在初始化變量時(shí)就需要標(biāo)記它是可變變量。盡管如此,這仍然意味著如果你調(diào)用了一個(gè)不接收指針的函數(shù),你可以確定它不會(huì)和你的結(jié)構(gòu)所混淆。

值默認(rèn)不會(huì)是 nil

不管在哪種語言里,我都不是很喜歡 Null,因此我很高興在 Go 里,默認(rèn)情況下你的結(jié)構(gòu)或者基本類型絕對(duì)不會(huì)指向 Nil,這就消除了錯(cuò)誤檢查——當(dāng)然有一個(gè)例外,就是在使用指針的情況下,因此在此情況中我們應(yīng)該有錯(cuò)誤處理機(jī)制。就算是 Tony Hoare 這個(gè)發(fā)明了 Null的人也曾經(jīng)將它形容為一個(gè)“價(jià)值百萬美元的錯(cuò)誤”。

  1. type myStruct struct{}func magic(m myStruct) {// 無指針,此情況下不會(huì)出現(xiàn) Nil}func magicp(m *myStruct) {// 可能出現(xiàn)空指針!} 

Nil 切片 == 空切片

是的,這一點(diǎn)再次和 Nil 相關(guān),因?yàn)槲艺娴暮懿幌矚g Nil 值。所以另一個(gè)讓我愛上 Go 語言的原因就是如果你有一個(gè) nil 切片,它和一個(gè)空切片其實(shí)沒什么區(qū)別,因此你就不需要分開判斷一個(gè)切片是否為 nil然后再判斷它是否為 empty。剛好這也是我喜歡 Common Lisp 的理由之一,當(dāng)時(shí)我很意外 Go 語言也能有這個(gè)功能。

  1. func main() {var s []intif len(s) == 0{ fmt.Println("hello")}} 

輕松發(fā)布相關(guān)庫

在知道 Go 語言中發(fā)布庫有多么容易之前,我好像從來就沒意識(shí)到這件事的重要性。我自己寫了一些 Go 庫,而我唯一需要做的事就是把它們 push 到 GitHub 上,之后別人可以直接在項(xiàng)目中引用這個(gè)項(xiàng)目 gogetgithub.com/4byte/{lib}。現(xiàn)在你也可以把它們添加成 go模塊,但這和往 GitHub 上發(fā)布庫一樣簡單。

Go 擁有強(qiáng)烈的語法偏好

強(qiáng)制代碼格式這一點(diǎn)有人喜歡就有人討厭,但 Go 確實(shí)是一門有著強(qiáng)烈語法偏好的語言。個(gè)人而言我很喜歡它的風(fēng)格,因?yàn)樵诖a審查上它移除了很多沒用的部分。借 Rob Pike 的原話:

Gofmt 不會(huì)是某個(gè)人的最愛,但它也是每個(gè)人的最愛。

多范式編程

你所看到的很多 Go 代碼都是偏向面向?qū)ο笮偷模灰欢ǚ堑檬敲嫦驅(qū)ο蟆?shí)際上,盡管 Go 在一些地方缺少某些語法和功能,但 Go 其實(shí)是可以成為一門不錯(cuò)的函數(shù)式編程語言的。舉個(gè)例子,Go 語言可以滿足柯里化(Function Currying)或者延續(xù)傳遞 CPS 風(fēng)格的編程。

雖然你不一定要讓整個(gè)代碼庫都呈現(xiàn)函數(shù)式編程的風(fēng)格,但在項(xiàng)目中的某些部分可以用到它。

Go 社區(qū)

不管是在 IRC 上的 freenode/go-nuts還是在 gophers.slack.com上你都能找到很多真正關(guān)心著這門語言的開發(fā)者。并且這些社區(qū)對(duì)剛剛轉(zhuǎn)向 Go 的新人都很友好。更拉好感的是,Go 社區(qū)在多樣性和包容性上做出了很大努力,比如 Git 上的 GoBridge 項(xiàng)目和"Women Who Go"項(xiàng)目等。

處處運(yùn)行

Go 基本上在哪里都能運(yùn)行,并且只要能提供正確的 GOOS,GOARCH,CGO_ENABLED 或 GOARM 標(biāo)記等,你可以在任何平臺(tái)上構(gòu)建它。這使 Go 也得以在多種架構(gòu)上運(yùn)行,比如 amd64,386 和 arm 等。

除開這些,Go 也是第一門擁有內(nèi)置 WebAssembly 的語言。除了這些已經(jīng)能支持的平臺(tái)外,還有類似 TinyGo 這樣的項(xiàng)目在推進(jìn) Go 更強(qiáng)大的跨平臺(tái)型和便攜性。

Go 被特意設(shè)計(jì)為一門簡單的語言

Go 從誕生之初就以簡單性為目標(biāo),到目前位置,它的簡單性保持得會(huì)很成功。Go 的語言規(guī)范是你從頭到尾看一遍(花不了多少時(shí)間)就能完全看懂的東西,這也意味著有些在別的語言中能夠找到的特性在 Go 里它就是不存在的,其中一個(gè)爭議比較大的就是 Go 缺少泛型。

我個(gè)人非常支持 Go 語言的這種簡單性,它的好處之一就是讓開發(fā)者可以迅速掌握該語言,而在一個(gè)團(tuán)隊(duì)中也幾乎不會(huì)出現(xiàn)這種你的同事使用了你從未見過的程序結(jié)構(gòu)的可能。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2019-11-07 09:34:43

Python語言Java

2020-04-27 21:31:28

智慧城市物聯(lián)網(wǎng)IOT

2015-03-09 09:25:04

2023-08-02 18:44:47

JavaScript命名web

2024-06-24 08:00:00

網(wǎng)絡(luò)安全WAFWeb應(yīng)用程序防火墻

2021-08-09 14:47:34

Go語言開發(fā)

2015-10-26 13:16:11

FreeMarkerJSP

2015-10-28 10:04:29

FreeMarkerJSP

2009-03-11 17:52:36

LinuxGnomeKDE

2020-10-24 08:00:56

前端開發(fā)Web

2015-09-06 08:53:22

谷歌Docs理由

2012-07-13 17:48:34

大數(shù)據(jù)Hadoop

2012-07-18 09:21:22

iPhone 5

2018-05-16 07:48:55

2012-03-08 09:17:14

程序員

2012-06-21 15:59:21

2011-05-19 13:13:43

2012-05-30 09:23:57

蒂姆 庫克

2019-07-12 13:59:21

Docker軟件技術(shù)

2025-01-08 08:47:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美成人免费 | 国产精品99久久久久久久久久久久 | 亚洲精品一区二区三区蜜桃久 | 国产一级片一区二区 | 国产精品3区 | 亚洲国产情侣自拍 | 香蕉久久久久久 | 伊人成人免费视频 | 人人九九精 | 国产精品视频一 | 亚洲欧美中文日韩在线v日本 | 全免费a级毛片免费看视频免费下 | 精品欧美一区免费观看α√ | 亚洲乱码国产乱码精品精98午夜 | 欧美激情精品久久久久久 | 婷婷久久综合 | 天天爽夜夜爽精品视频婷婷 | 亚洲一区二区三区四区av | 成人精品一区二区三区中文字幕 | 亚洲精品一区二区三区在线观看 | 国产成人精品一区二区三区网站观看 | 亚洲精品视频在线播放 | 亚洲精品一级 | 国产视频精品区 | 成人精品一区二区 | 国产精品美女久久久久久免费 | 欧美区日韩区 | 日韩中文在线视频 | av天天爽 | 亚洲成人免费视频在线 | 在线看av的网址 | 美女视频网站久久 | 一级黄色毛片 | 国产精品毛片一区二区三区 | 黄色一级免费观看 | 日韩欧美一区二区三区免费观看 | 中文字幕91 | 亚洲人久久| 天天干天天操天天看 | 超碰人人91 | 中文字幕91av |