最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

為什么字節(jié)跳動選擇使用 Go 語言?

2023-02-05 21:58 作者:DevWeekly  | 我要投稿

程序員寶藏庫https://gitee.com/sharetech_lee/CS-Books-Store

Golang是最年輕的編程語言之一,在寫這篇內(nèi)容之前,目前穩(wěn)定的Golang版本是1.19.5。

除此之外,它被認為是一種在開發(fā)者中很受歡迎的編程語言。它可以在許多平臺和環(huán)境中構(gòu)建和運行,有豐富且實用的內(nèi)置包。

我使用Golang是因為它簡潔明了,結(jié)構(gòu)化,而且干凈。

接下來,我會介紹為何選擇Golang。我不打算將Golang與其他編程語言進行比較,因為我認為并沒有什么意義和價值。

所以,我會從語言結(jié)構(gòu)本身開始介紹,讓你領(lǐng)會Golang的與眾不同。

語言結(jié)構(gòu)

package main
import (
?"errors"
?"fmt"
)
type Numbers []int
func (n Numbers) Repeat() error {
?if n == nil {
? ?return errors.New("Numbers is nil")
?}
?for i, e := range n {
? ?fmt.Printf("%02d => %3d\n", i+1, e)
?}
?return nil
}
func main() {
?if err := Numbers(nil).Repeat(); err != nil {
? ?fmt.Println(err)
?}
?_ = Numbers([]int{1, 99, 100}).Repeat()
}

我不會介紹所有的Go語言語法,但上面的代碼是Golang代碼的一個例子。

你現(xiàn)在不需要理解它,但你可以學習代碼的結(jié)構(gòu),從package和import,到func main作為入口點,if-else和for循環(huán)作為控制結(jié)構(gòu)之一,還涉及到types、nil、errors等等。

它是嚴格的類型化的,使用大括號作為范圍,即使你只寫了一行控制結(jié)構(gòu),使用nil而不是null(在這里節(jié)省了1個字符),并且只用分號來分隔語句,而不是結(jié)束它。

綜上所述,Golang的語法很適合初學者,至少我是這么認為的。

你不用擔心寫出質(zhì)量較差的代碼語法,因為Golang不僅有完善的指南來教你如何寫的更好,它也有自己的linter和formatter,來規(guī)范化你的代碼。

內(nèi)置支持

Golang帶來了自己內(nèi)置的工具來幫你構(gòu)建一個優(yōu)秀的應用程序。

Linter? Formatter? Tester? 你說了算。

它也有一個垃圾收集器,原生支持并發(fā),還支持在線運行。除此之外,Golang也有支持性的內(nèi)置包。你可以在沒有任何第三方模塊的情況下編寫一個網(wǎng)絡(luò)應用、命令行界面應用,甚至是一個Web Assembly應用。

但是,如果你想創(chuàng)建一個Golang模塊呢?讓我們來談?wù)勥@個問題。

模塊

你可以在本地和遠程輕松地創(chuàng)建一個 Golang 模塊。

只需執(zhí)行g(shù)o mod init <module-name>,然后像往常一樣編碼即可。

Golang模塊開箱即支持git,你可以直接把你的Golang模塊推送到git倉庫,然后把它導入你的代碼中。

例如,如果你想導入Postgres插件或數(shù)據(jù)庫憑證模塊,你只需輸入git repo的名字就可以導入。

import (
?"context"
?"database/sql"
?"log"
?"time"
?"github.com/ClavinJune/rotator"
?"github.com/lib/pq"
)

構(gòu)建結(jié)果

Golang將你的代碼構(gòu)建成二進制文件。

如果你在Windows上,它將把你的代碼構(gòu)建成可執(zhí)行文件,如果你在Linux上,它將構(gòu)建一個ELF文件,以此類推。

另外,你可以只用一個環(huán)境變量來控制構(gòu)建。

假設(shè)你在一臺Linux機器上,但你想為Windows創(chuàng)建一個可執(zhí)行文件,只要告訴它就可以了。

$ ls
main.go
$ GOOS=windows GOARCH=amd64 go build main.go
$ file main.exe
main.exe: PE32+ executable (console) x86-64 (stripped to external PDB), for MS Windows
$ GOOS=darwin GOARCH=amd64 go build main.go
$ file main
main: Mach-O 64-bit x86_64 executable

你也可以創(chuàng)建一個Web Assembly模塊。

$ GOOS=js GOARCH=wasm go build -o main.wasm main.go
$ file main.wasm
main.wasm: WebAssembly (wasm) binary module version 0x1 (MVP)

在前面的內(nèi)容里,我并沒有面面俱到詳細介紹Go語言的每一處細節(jié),只是主觀的介紹了一些我個人比較欣賞的亮點。

如果,這能夠引起你對Go語言的興趣,可以通過書籍或者教程去深入、系統(tǒng)的學習。

hello,大家好,我是Jackpop,重點大學本科畢業(yè)后保送到哈工大計算數(shù)學專業(yè)讀研,有多年國內(nèi)頭部互聯(lián)網(wǎng)、IT公司工作經(jīng)驗,先后從事過計算機視覺、推薦系統(tǒng)、后端、數(shù)據(jù)等相關(guān)工作。如果同學們在升學考研、職業(yè)規(guī)劃、高考志愿、簡歷優(yōu)化、技術(shù)學習等方面有困惑,歡迎大家前來咨詢!


為什么字節(jié)跳動選擇使用 Go 語言?的評論 (共 條)

分享到微博請遵守國家法律
白银市| 宝丰县| 张家口市| 昭通市| 侯马市| 榕江县| 衡东县| 若尔盖县| 家居| 朝阳市| 临夏市| 高邑县| 名山县| 镇巴县| 屏东县| 兴安盟| 贵定县| 武义县| 陵川县| 绵阳市| 宜兰市| 蒙自县| 墨江| 元阳县| 斗六市| 孟津县| 郸城县| 沈丘县| 侯马市| 谢通门县| 永和县| 泰来县| 温州市| 灵台县| 漾濞| 临海市| 巴楚县| 乐至县| 龙南县| 鲜城| 四子王旗|