1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Go語言的使用優(yōu)點有哪些

      這篇“Go語言的使用優(yōu)點有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Go語言的使用優(yōu)點有哪些”文章吧。

      我們提供的服務(wù)有:成都網(wǎng)站制作、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、新田ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的新田網(wǎng)站制作公司

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

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

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

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

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

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

      不變值

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

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

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

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

      Nil 切片 == 空切片

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

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

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

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

      Go 擁有強烈的語法偏好

      強制代碼格式這一點有人喜歡就有人討厭,但 Go 確實是一門有著強烈語法偏好的語言。個人而言我很喜歡它的風(fēng)格,因為在代碼審查上它移除了很多沒用的部分。借  Rob Pike 的原話:

      Gofmt 不會是某個人的最愛,但它也是每個人的最愛。

      多范式編程

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

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

      Go 社區(qū)

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

      處處運行

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

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

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

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

      以上就是關(guān)于“Go語言的使用優(yōu)點有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      網(wǎng)站名稱:Go語言的使用優(yōu)點有哪些
      網(wǎng)頁路徑:http://www.ef60e0e.cn/article/ppgddd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        玉树县| 清原| 额敏县| 吐鲁番市| 长治市| 射阳县| 建宁县| 化隆| 平利县| 大冶市| 晋宁县| 石阡县| 谢通门县| 西和县| 西乌珠穆沁旗| 利辛县| 永靖县| 阿鲁科尔沁旗| 砚山县| 明溪县| 哈密市| 西盟| 江永县| 四会市| 舟曲县| 邓州市| 扎兰屯市| 历史| 呈贡县| 司法| 大理市| 庄浪县| 达孜县| 裕民县| 兰坪| 道真| 南乐县| 上高县| 宁河县| 海城市| 资中县|