国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

作為一名 Go 程序員,我為啥更喜歡用 Zig?

譯文 精選
開發 前端
Zig 夠簡單、夠強大、夠安全又兼備 C 兼容性,備受開發人員青睞 。無論你是在為新項目尋找語言,還是只是想擴展編程能力,Zig 都是值得探索的很棒的選擇。

作者 | Vladimir Vivien

編譯 | 如煙

出品 | 51CTO技術棧(微信號:blog51cto)

Zig 是一種比較新的編程語言,于 2016 年首次推出。Zig 社區將其描述為“一種用于維護穩固的、可優化和可重用軟件的通用編程語言”。

看似一句簡單的描述,卻隱藏著遠大的抱負。Zig被看作是可與C語言一較高下的編程語言。此外,Zig 也是一個編譯器工具鏈,可以作為現有 C 編譯器的替代品。

作為一個使用 Go 的程序員,我發現 Zig 及其工具鏈提出的主張很有意思。我在研究 Zig 時,發現這兩種語言(Zig 和 Go)有一些共同之處。接下來,我將詳細介紹作為 Go 程序員,我覺得 Zig 有趣的功能。

1、簡單

這兩種語言都采用了簡單的設計理念,執行過程很順暢,大大提高了工作效率。Zig 不支持宏、預處理器或運算符重載。

Go 是一種托管內存語言,并且運行時有特別的方法來處理內存的分配 / 釋放。但 Zig 始終恪守“無隱藏控制流”的口號,沒有自動內存管理,而是提供 API,讓程序員通過其標準庫手動管理內存。

2、強類型

作為一種為系統編程而設計的語言,Zig圍繞其類型系統提供了大量以安全性和C ABI兼容性為中心的特性。雖然我無法充分介紹所有內容,但可以提出一些你可能會感興趣的亮點:

  • 有符號/無符號整數(預設大小從 8 位到 128 位)
  • 任意大小的有符號/無符號整數(即i77 位 int)
  • 浮點(從 16 位精度到 128 位精度)
  • 切片和數組(即 []u8{ ‘h’, ‘i’, ‘!’}或[4]i32{ 1, 2, 3, 4 })
  • UTF-8 編碼的字符串文字,存儲為以 null 結尾的字節數組
  • 具有 C ABI 兼容性的功能豐富的結構類型
  • 具有隱式/顯式序數值的枚舉和對方法的支持
  • 用于存儲多種類型選擇的值的聯合
  • 支持使用向量的并行運算
  • 傳統指針和帶有切片表達式的多項指針

3、處理錯誤

Zig 中的錯誤處理效果非常好。它是 try-catch-exception 語義和 Go 錯誤值之間的交叉。那么它是如何運行的?

首先,所有 Zig 錯誤都是必須分配和處理的值(否則將導致編譯時錯誤)。Zig 錯誤使用error這個關鍵字聲明為一組值:

圖片圖片

使用二進制運算符 !,可以將Zig錯誤值與正常類型的值組合起來,形成可由函數返回的 Union 類型。

例如,下面的函數可以返回類型為 error 或 u32 的值,返回類型為 !u32(或顯示為DigitError!u32):

圖片圖片

此外,Zig 用一個非常有意思的結構來處理錯誤。與其他語言中的異常處理類似,Zig 使用 catch 關鍵字將錯誤處理代碼塊附加到函數調用中,如果返回錯誤值,則該函數調用將被執行,如下所示:

圖片圖片

Zig 還支持使用關鍵字 try 在調用堆棧中傳播錯誤的機制。例如,addAll 的功能是如果返回或繼續執行其他操作,下面的函數將返回錯誤。

圖片圖片

最后,Zig 可以使用 if-else-switch 來更精確地過濾和處理錯誤結果:

圖片圖片

4、Zig測試

在 Zig 中,源代碼測試是一流的組成部分,在該語言中擁有自己的test關鍵字。測試的聲明方式與頂級函數類似,使用 test 關鍵字,后跟描述和代碼塊:

圖片圖片

與go test一樣,工具鏈附帶了zig test命令,用于在源代碼中執行測試:

圖片圖片

5、Zig運行

與 go run 類似,Zig 提供了一個更便捷的 zig run 命令,結合了編譯和運行 Zig 源代碼的步驟:

圖片圖片

6、延遲

與Go類似,Zig使用 defer 來簡化資源管理,以便在當前執行的范圍塊結束時執行清理操作,例如釋放資源。

圖片圖片

7、Comptime

comptime是該語言中另一個有趣的概念,在大多數其他語言中都沒有。Zig 沒有單獨的元語言或宏系統。但Zig 提供了一種巧妙的解決方案,使用comptime(或編譯時)的概念將其源代碼的可編程性擴展到編譯階段。

通過comptime,Zig 可以在編譯時實現多種功能:

  • 在編譯時解析的變量和表達式
  • 基于編譯時值運行的函數
  • comptime 編譯期間選擇性執行的代碼塊
  • 編譯時執行的元編程

8、通用性

當然,Zig 編譯時可編程性帶來結果是泛型類型和數據結構的實現。在 Zig 中,comptime 提供對可作為常規數據值存儲和傳遞的類型值的訪問。

這使得創建采用類型參數的函數成為可能,如下所示:

圖片圖片

由于 comptime 類型值被視為任何類型,因此 Zig 允許使用它們構建通用數據結構。例如,MakeList 使用 comptime 類型信息返回在編譯時構建的結構:

圖片圖片

9、Zig可作為C(交叉)編譯器

Zig 工具鏈具有全功能 C 編譯器,這意味著你可以使用 Zig 來替代當前的 C 編譯器工具鏈。給出以下 hello.c 源代碼文件:

圖片圖片

Zig 可以使用以下命令將源代碼編譯為可執行二進制文件:

圖片圖片

10、Zig 和 C 交叉編譯

Zig 可以輕松交叉編譯代碼(無論是 C 還是 Zig),并且匯集了所有必要的工具和庫,以確保你可以針對其支持的任何架構。

例如,Zig 可以將之前的 C 源代碼交叉編譯為針對 linux 的靜態二進制文件(使用 musl):

11、Zig 和 CGo 交叉編譯

事實證明,Zig 的C交叉編譯支持對于交叉編譯支持Go的Go源代碼非常有用。例如,在 add.c 中添加以下 C 函數:

圖片圖片

我們用Go來調用它:

圖片圖片

假設在 MacOS 構建代碼,我們可以通過命令 zig cc 來使用 Zig 的 C 編譯器,將 C 代碼交叉編譯為鏈接到 Go 對象文件的目標文件,從而為在 x86 架構上運行的 Linux 構建靜態二進制文件:

圖片圖片

要實現此功能,你只需在工作站上安裝 Zig 工具鏈,無需其他輔助工具。

雖然這看起來沒什么大不了的,但請記住,交叉編譯支持 CGo 的靜態二進制文件會更復雜(在不使用 Zig 的情況下)。通常需要幾個步驟來準備構建環境,其中包含交叉編譯目標平臺所需的軟件包(請參閱此處)。

結論

Zig 夠簡單、夠強大、夠安全又兼備 C 兼容性,備受開發人員青睞 。無論你是在為新項目尋找語言,還是只是想擴展編程能力,Zig 都是值得探索的很棒的選擇。

參考鏈接:

https://medium.com/@vladimirvivien/things-i-like-about-zig-as-a-go-programmer-75eb02aab00f

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2012-12-12 09:52:18

程序員

2015-09-23 11:04:22

2019-11-18 10:06:44

程序員CDN靜態資源

2013-02-22 10:21:06

2011-11-09 13:52:04

程序員

2011-04-11 17:41:35

C++程序員

2009-11-04 11:54:33

程序員職業水準

2019-01-28 11:54:28

程序員技能溝通

2015-05-15 10:39:44

Java 冠軍程序員?

2018-01-02 14:40:58

程序員年齡時間

2015-06-04 11:31:36

程序員12周內

2021-06-30 10:48:30

VueReact前端

2017-09-21 09:44:00

編程程序員軟件開發

2015-07-28 10:39:34

程序員知識

2021-02-21 13:49:48

Java程序員開發

2011-05-03 08:54:36

2010-10-28 13:21:47

2018-02-26 11:13:01

程序員技能開發

2014-08-27 09:35:24

程序員

2022-09-30 10:32:59

API文檔
點贊
收藏

51CTO技術棧公眾號

日韩精品免费观看| 国产精品亚洲二区在线观看| 成人久久久久久久久| 欧美尿孔扩张虐视频| 91香蕉视频在线| 欧美富婆性猛交| 屁屁影院在线观看| 青青草91视频| 97香蕉超级碰碰久久免费的优势| 国产亚洲依依| 国产成人综合在线观看| 成人黄色短视频在线观看| 婷婷电影在线观看| 亚洲美女屁股眼交| 亚欧精品在线| 欧美日韩国内| 91国在线精品国内播放| 成人看av片| 色综合天天在线| 四虎国产精品成人免费4hu| 日本成人超碰在线观看| caoporn国产精品免费公开| 欧美精选视频一区二区| 亚洲成人黄色在线观看| 91啦中文在线| 亚洲欧美偷拍卡通变态| 992tv成人国产福利在线| 欧美色图在线视频| 国产高清视频色在线www| 蜜臀久久99精品久久久久久宅男 | 成人羞羞网站| 国产精品视频入口| 韩国成人福利片在线播放| 亚洲自偷自拍熟女另类| 亚洲黄一区二区三区| fc2ppv国产精品久久| 久久久国产一区二区| 日本在线视频www鲁啊鲁| 欧美日韩你懂得| 日韩一区二区三区四区五区 | 成人精品视频在线| 久久aⅴ国产紧身牛仔裤| 蜜桃久久精品乱码一区二区 | 日本阿v视频在线观看| av亚洲精华国产精华| 蜜臀一区二区三区| 日韩精品一区二区在线| julia中文字幕一区二区99在线| 国产九九精品视频| 成人h动漫精品一区二区| 美女毛片在线看| 欧美成人精品一区二区| 亚洲免费观看| h片免费观看| 色播久久人人爽人人爽人人片视av| 99热在线成人| 男人草女人视频| 欧美日韩国产首页在线观看| 999精品视频在这里| 艳母动漫在线观看| 午夜一区二区三区在线观看| 日韩色淫视频| aaa级精品久久久国产片| 国产精品萝li| 在线免费视频一区| 欧美成人三级电影在线| 午夜激情视频在线观看| 日韩一本二本av| 欧美亚洲福利| 任我爽精品视频在线播放| 久久众筹精品私拍模特| 国产午夜精品在线| 亚洲传媒在线| 国产成人福利网站| 香蕉视频亚洲一级| 懂色av影视一区二区三区| 免费观看黄色的网站| 西西裸体人体做爰大胆久久久| 亚洲韩国在线| 国产suv精品一区二区三区| 日本激情视频在线| 国产精品久久精品国产 | 午夜在线免费观看视频| 国产+成+人+亚洲欧洲| 秋霞影院一区| 色综合久久88色综合天天看泰| 亚洲欧美久久精品| 亚洲欧洲在线播放| 欧美影院精品| 久久国产小视频| 国产女同一区二区| 欧美高清性hdvideosex| 日韩一级在线| 精品国产乱码一区二区三区| 午夜伦伦电影理论片费看| 91精品综合视频| 精品国产自在久精品国产| 狠狠狠色丁香婷婷综合激情| 国产视频一区在线观看一区免费| 成人18免费入口| 国产精品卡一卡二卡三| 日本在线观看免费视频| 日韩亚洲欧美中文高清在线| 国产精品一区亚洲| 欧美高清中文字幕| 欧美视频完全免费看| 中文字幕视频在线| 中文字幕视频在线免费欧美日韩综合在线看 | 国产99re66在线视频| 亚洲国产中文字幕久久网| 偷拍自拍一区| 一区二区三区欧美在线| 午夜日韩在线电影| 成人性生交大片免费看午夜| 精品成人乱色一区二区| 毛片免费在线播放| 久久精品久久久久久| 精品亚洲成a人在线观看 | 国产麻豆电影在线观看| 悠悠色在线精品| 国产美女精品视频免费播放软件| 一区二区精品视频| 日韩一区二区在线观看| 在线一区免费| 在线视频国产三级| 日日狠狠久久偷偷四色综合免费| 亚洲成人av中文| 日韩二区三区在线观看| 激情亚洲小说| 最新版sss视频在线| 黄色a级在线观看| 成人在线视频网站| 亚洲三级 欧美三级| 精品久久久久香蕉网| 精品福利一区二区| 一区二区中文视频| 久久久久青草大香线综合精品| 一区二区三区在线资源| 精品欧美一区免费观看α√| 亚洲一区三区在线观看| 91精品国产综合久久久蜜臀粉嫩 | 久久99国产精品| 国产欧美日韩另类一区| 日本欧美在线看| 在线观看日韩av电影| 日韩精品一区二区三区免费观影| 欧美经典影片视频网站| 日韩电影免费观| 中文字幕这里只有精品| 日本三级韩国三级欧美三级| 麻豆传媒视频在线观看免费| 波多野结衣在线影院| 免费黄网站在线播放| 91福利在线尤物| 国产成人a视频高清在线观看| 亚洲老司机网| 红桃成人av在线播放| 成人久久电影| 日韩一区欧美二区| 国产一区二区三区在线观看精品| 国产综合色在线视频区| 99久久精品国产麻豆演员表| 国产亚洲成年网址在线观看| 国产亲近乱来精品视频| 亚洲综合成人在线| 欧美精品成人一区二区三区四区| 7777精品伊人久久久大香线蕉完整版 | 在线观看精品一区| 亚洲欧美日韩爽爽影院| 97视频免费在线看| 久久精品国产第一区二区三区最新章节 | 欧美午夜电影在线| 欧美一区永久视频免费观看| 亚洲国产精品福利| 日韩免费观看高清| 一区二区三区在线视频看| 99re6这里只有精品视频在线观看| 亚洲人成伊人成综合网小说| 在线不卡一区二区| 91av国产在线| 欧美成人一区二区在线| 波多野结衣在线中文| 激情在线视频播放| 深爱激情久久| 26uuuu精品一区二区| 欧美一级生活片| 亚洲综合第一页| 国产午夜在线| 成人激情久久| 成人av综合一区| 亚洲视频视频在线| 日韩精品最新在线观看| 小小水蜜桃在线观看| 久久影院资源站| 国产精品灌醉下药二区| 另类专区欧美制服同性| 强伦女教师2:伦理在线观看| 人人干在线视频| 日韩电影在线观看网站| 日韩亚洲欧美成人一区|