<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Golang 1.16新特性——看完血賺

          共 5316字,需瀏覽 11分鐘

           ·

          2021-05-01 21:31

          Golang 1.16今年重磅發(fā)布了,這一版本有哪些新特性呢?

          本篇就帶大家來捋一下~~



          1

          支持arm64



          它支持最新Mac的M1芯片 。


          在Golang1.16中,官方已經(jīng)支持darwin/arm64平臺(tái),cgo和編譯成C語(yǔ)言可調(diào)用的動(dòng)態(tài)/靜態(tài)鏈接庫(kù)的功能也已支持。

          同樣,free bsd家族的arm64版本也可以使用Golang。(PS:再也不用擔(dān)心M1電腦不能寫代碼了



          2

          內(nèi)嵌資源文件


          把靜態(tài)文件嵌入Golang二進(jìn)制程序的工具了,Golang將這一功能加入了embed標(biāo)準(zhǔn)庫(kù),從語(yǔ)言層面上提供了支持。 



          3

          Go modules的新特性

           (module [?mɑ?d?u?l] 組件)

           GO111MODULE現(xiàn)在默認(rèn)為on,如果還不習(xí)慣使用modules,應(yīng)該學(xué)一下了。 



          4

          go build的變化


           以前使用go build命令會(huì)自動(dòng)下載依賴,這會(huì)更新mod文件。 

          現(xiàn)在這一行為被禁止了。想要安裝、更新依賴只能使用go get命令,go build和go test將不會(huì)再下載依賴。 



          5

          go install的變化


          通過go install xx.module/[email protected] 在module末尾加上版本號(hào),可以在不影響當(dāng)前mod的依賴的情況下安裝golang程序。 




          6

          新的GOVCS環(huán)境變量


           新的GOVCS環(huán)境變量指定了golang用什么版本控制工具下載源代碼。 


          其格式為:

          GOVCS=<module prefix>:<tool name>,[<module prefix>:<tool name>, ...] 

          其中module prefix為github.com等,而tool name就是版本控制工具的名字,比如git,svn。 


          一個(gè)更具體的例子是:

          GOVCS=github.com:git,xx.com:off,*:git|hg 

          module prefix也可以用*通配任何模塊的前綴。 

          tool name還可以設(shè)置為all和off,all代表允許使用任何可用的工具,而off則表示不允許使用任何版本控制工具。不過現(xiàn)在設(shè)置為off的模塊的代碼仍然可能會(huì)被下載。 



          7

          相對(duì)路徑導(dǎo)入不再被允許



          Golang1.16開始禁止import導(dǎo)入的模塊以.開頭,模塊路徑中也不允許出現(xiàn)任何非ASCII字符,所以下面的代碼不再合法: 

          import ( 
          "./happy"
          "../models/product"
          "xx.pkg.com/面向加薪學(xué)習(xí)"
          )





          8

          標(biāo)準(zhǔn)庫(kù)的變化


          Golang1.16已經(jīng)標(biāo)記io/ioutil為廢棄,函數(shù)被轉(zhuǎn)移到了os和io這兩個(gè)包里:


          Discard           io.Discard 
          NopCloser io.NopCloser
          ReadAll io.ReadAll
          ReadDir os.ReadDir
          ReadFile os.ReadFile
          WriteFile os.WriteFile
          TempDir os.MkdirTemp
          TempFile os.CreateTemp




          9

          tcp半連接隊(duì)列擴(kuò)容



          在Linux kernel 4.1以前,Golang設(shè)置tcp的listen隊(duì)列的長(zhǎng)度是從/proc/sys/net/core/somaxconn獲取的,通常為4096。 

          而在4.1以后golang會(huì)直接設(shè)置半連接隊(duì)列的長(zhǎng)度為2^32 - 1也就是4294967295。更大的半連接隊(duì)列意味著可以同時(shí)處理更多的新加入請(qǐng)求,而且不用再讀取配置文件性能也會(huì)略微提升。



          10

          重大更新io/fs



           Golang1.16最大的變化就是引入了io/fs包。 

          Golang的設(shè)計(jì)者認(rèn)為文件的io操作是依賴于文件系統(tǒng)(filesystem,fs)的,所以決定模仿Linux的vfs做一套基于fs的io接口。 

          這樣做有3個(gè)目的: 

          • os包應(yīng)該專注于和系統(tǒng)交互而不是包含一部分io接口;

          • io包和os包分別包含了io接口的一部分,導(dǎo)致互相依賴職責(zé)不清晰;

          • 可以把有關(guān)聯(lián)的一部分文件或者數(shù)據(jù)組成虛擬文件系統(tǒng),給通用接口處理提升程序 的可擴(kuò)展性,比如zip打包的文件。


          fs包中主要包含了下面幾種數(shù)據(jù)類型(都是接口類型): 

          • FS:文件系統(tǒng)的抽象,有一個(gè)Open方法用來從FS打開獲取文件數(shù)據(jù) 

          • DirEntry:描述目錄項(xiàng)目(包含目錄自身)的數(shù)據(jù)結(jié)構(gòu) 

          • File:描述文件數(shù)據(jù)的結(jié)構(gòu),包含Stat,Read,Close方法 

          • ReadDirFile:在File的基礎(chǔ)上支持ReadDir,可以代表目錄自身 

          • FileMode:描述文件類型,比如是通常文件還是套接字或者是管道 

          • FileInfo:文件的元數(shù)據(jù),例如創(chuàng)建時(shí)間等 


          其中,有一些接口和os包中的同名,實(shí)際上是os包引入fs包后起的別名。 

          對(duì)于FS,還有以下擴(kuò)展: 

          • GlobFS:增加Glob方法,可以用通配符查找文件 

          • ReadDirFS:增加ReadDir方法,可以遍歷目錄 

          • ReadFileFS:增加ReadFile方法,可以用文件名讀取文件所有內(nèi)容 

          • StatFS:增加Stat方法,可以獲得文件/目錄的元信息 

          • SubFS:增加Sub方法,Sub方法接受一個(gè)文件/目錄的名字,從這個(gè)名字作為根目錄返回一個(gè)新的文件系統(tǒng)對(duì)象 


          fs包還提供了諸如Glob、WalkDir等傳統(tǒng)的文件操作接口。 

          fs的主要威力在于處理zip、tar文件,以及http的文件接口時(shí)可以大幅簡(jiǎn)化代碼。而且,新的embed靜態(tài)資源嵌入也是依賴fs實(shí)現(xiàn)的。 


          歡迎關(guān)注作者新書



          ▊《Go語(yǔ)言極簡(jiǎn)一本通:零基礎(chǔ)入門到項(xiàng)目實(shí)戰(zhàn)

          歡喜 編著


          • 一本就通,一學(xué)就會(huì)!

          本書是一本Go語(yǔ)言入門書,全書共分為三部分。第一部分講解Go語(yǔ)言基礎(chǔ)知識(shí),包括變量與簡(jiǎn)單類型、數(shù)組、切片、流程控制、字典、函數(shù)、結(jié)構(gòu)體與方法、接口等,可以幫助讀者快速掌握Go語(yǔ)言的基本程序結(jié)構(gòu)。第二部分講解Go語(yǔ)言高效并發(fā)相關(guān)知識(shí),包括協(xié)程與通道、并發(fā)資源、包管理和測(cè)試等,讓讀者對(duì)Go語(yǔ)言層面的并發(fā)支持有更深入的理解。第三部分講解Go語(yǔ)言項(xiàng)目實(shí)戰(zhàn),包括Gin框架、生活點(diǎn)評(píng)項(xiàng)目實(shí)戰(zhàn)、賬戶管理系統(tǒng)實(shí)戰(zhàn),以及OAuth 2.0的授權(quán)協(xié)議等。通過實(shí)戰(zhàn),把前面講解的知識(shí)點(diǎn)運(yùn)用起來,幫助讀者快速上手,積累項(xiàng)目經(jīng)驗(yàn)。

          (掃碼了解本書詳情)



              


          如果喜歡本文
          歡迎 在看留言分享至朋友圈 三連


           熱文推薦  





          ▼點(diǎn)擊閱讀原文,獲取本書詳情~
          瀏覽 6
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲自拍小视频在线观看 | 哪里有免费的av 男女wwwwww | 久热视频在线免费观看 | 精品三级视频 | 在线观看高清无码 |