自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Go 語言十五周年!權力交接、回顧與展望

開發(fā) 前端
在過去的五年中,Go 的用戶基數增長了三倍多,成為增長最快的編程語言之一。Go 語言不僅躋身于十大編程語言之列,更成為現(xiàn)代云計算的首選語言。

大家好,我是煎魚。

2024 年 11 月 11 日,Go 語言迎來了它的 15 歲生日。自 2009 年開源發(fā)布以來,Go 語言以其穩(wěn)定性、安全性和對大規(guī)模軟件工程的支持而聞名。

本文將回顧 Go 語言的發(fā)展歷程,探討其最新特性,并展望 Go 語言的未來。

Go 語言的快速增長

在過去的五年中,Go 的用戶基數增長了三倍多,成為增長最快的編程語言之一。

Go 語言不僅躋身于十大編程語言之列,更成為現(xiàn)代云計算的首選語言。

Go 1.22 和 Go 1.23 的新特性

for 循環(huán)的變革

Go 1.22 和 Go 1.23 的發(fā)布標志著 for 循環(huán)的重大變革。

Go 1.22 引入了變量作用域的變更,使得 for 循環(huán)中引入的變量作用域為每次迭代,而非整個循環(huán),解決了長期存在的語言 “陷阱”。

如下代碼:

for i := 0; i < 5; i++ {
    go func() {
        fmt.Println(i)
    }()
}

在 Go 1.22 之前,這會打印最后 i 的值 5 次;現(xiàn)在會打印出 0 到 4 的數值。

這一決策的背后是 Go 團隊對歷史決策的反思和社區(qū)反饋的重視。

向前兼容的語言特性

這些變革得以實現(xiàn),得益于 Go 1.21 引入的向前語言兼容性。

這一特性建立在 Go 模塊的基礎上,Go 模塊自 Go 1.14 引入以來,已經過去了四年半。

迭代器和用戶定義的 for-range 循環(huán)

Go 1.23 在此基礎上進一步引入了迭代器和用戶定義的 for-range 循環(huán)。

迭代器的代碼例子:

func Backward[E any](s []E) iter.Seq2[int, E] {
 return func(yield func(int, E) bool) {
  for i := len(s) - 1; i >= 0; i-- {
   if !yield(i, s[i]) {
    return
   }
  }
 }
}

func main() {
 sl := []string{"腦子", "進", "煎魚", "了"}
 for i, s := range Backward(sl) {
  fmt.Printf("%d: %s\n", i, s)
 }
}

結合 Go 1.18 引入的泛型,這為自定義集合和其他編程模式提供了強大而便捷的基礎。

各項特效的功能增強

這些版本還帶來了許多生產就緒性的提升,帶來了非常大的提升。

例如,標準庫 net/http 的 HTTP ServerMux 的功能增強:

mux.HandleFunc("POST /eddycjy/create", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "腦子進煎魚了!")
})

mux.HandleFunc("GET /eddycjy/update", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "煎魚進腦子了...")
})

mux.HandleFunc("/eddycjy/{id}", func(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")
    fmt.Fprintf(w, "id 值為 %s", id)
})

mux.HandleFunc("/eddycjy/{path...}", func(w http.ResponseWriter, r *http.Request) {
    path := r.PathValue("path")
    fmt.Fprintf(w, "path 值為 %s", path)
})
...

還有 Trace 執(zhí)行追蹤的全面改革,以及為所有 Go 應用程序提供更強的隨機性的新包 math/rand/v2。

此外,首個 v2 標準庫包的引入為未來庫的演變和現(xiàn)代化樹立了新的 v2 模板。(后面要搞 encoding/json/v2,值得期待?。?/p>

Go 工具的遙測

過去一年,Go 團隊謹慎推出了 Go 工具 Gotelemetry 的可選遙測系統(tǒng)。

這一系統(tǒng)將為 Go 開發(fā)者提供數據,幫助他們做出更好的決策,同時保持完全開放和匿名。

圖片圖片

Go 遙測首先出現(xiàn)在 gopls 中,已經帶來了許多改進。

未來的發(fā)展方向

硬件適應性

Go 團隊正在進化 Go 語言,以更好地利用當前和未來的硬件能力。

為了確保 Go 在未來 15 年繼續(xù)支持高性能、大規(guī)模的生產工作負載,Go 需要適應大型多核、高級指令集以及在日益非均勻的內存層次結構中局部性的重要性。

新的 map 實現(xiàn)

Go 1.24 將有一個全新的 map 實現(xiàn),它在現(xiàn)代 CPU 上更高效。

同時,Go 團隊正在原型設計新的垃圾回收算法(就是上次說到新任負責人去日本喝抹茶,結果想出來個抹茶新算法)。

這些新算法將基于現(xiàn)代硬件的能力和限制會進行調整,給 Go 帶來更大的效益。

新 API 和工具

一些改進將以新 API 和工具的形式出現(xiàn),以便 Go 開發(fā)者更好地利用現(xiàn)代硬件。

Go 團隊正在研究如何支持最新的向量和矩陣硬件指令,以及應用程序如何構建 CPU 和內存局部性。

可組合優(yōu)化

指導這些努力的核心原則是可組合優(yōu)化:優(yōu)化對代碼庫的影響應盡可能局部化。

確保代碼庫其余部分的開發(fā)簡便性不受影響。

安全性

Go 團隊繼續(xù)確保 Go 的標準庫默認安全、設計安全。

圖片圖片

這包括持續(xù)努力將 FIPS 認證的加密支持內置到 Go 中,使得需要 FIPS 加密的應用程序只需切換一個標志即可。

AI 與 Go

Go 團隊正在通過增強 Go 在 AI 基礎設施、應用程序和開發(fā)者輔助方面的能力,使 Go 更好地服務于 AI,同時也使 AI 更好地服務于 Go。

Go 作為構建生產系統(tǒng)的可靠語言,Go 團隊希望它也能成為構建生產 AI 系統(tǒng)的可靠語言。

圖片圖片

Gabyhelp

OscarOscar

Go 在云基礎設施中的可靠性使其成為 LLM 基礎設施的自然選擇。

對于 AI 應用程序,Go 團隊將繼續(xù)在流行的 AI SDK(LangChainGo 和 Genkit) 中為 Go 提供一流的支持。

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2011-12-27 14:54:24

回顧app移動應用

2011-11-11 17:33:34

Go

2011-12-15 20:21:48

Web

2011-08-22 09:35:34

2010-01-07 13:47:35

交換機產品

2012-08-13 10:44:55

IT技術周刊

2011-07-28 17:22:57

虛擬化云計算

2021-01-07 22:46:43

人工智能農業(yè)疫情

2024-01-19 09:03:06

ReactTypeScripFlexbox

2014-01-09 14:07:46

Firefox OS操作系統(tǒng)

2017-12-07 15:44:58

人工智能AI信息化

2009-10-27 08:46:38

Ubuntu操作系統(tǒng)linux

2019-10-14 16:08:26

5G運營商5G牌照

2009-09-01 18:15:56

IBM大型機主機

2014-11-13 11:22:27

Go

2011-05-20 21:49:46

2020-02-12 12:49:30

數據中心網絡運營商

2010-12-01 13:32:25

東軟安全新老交接睿變

2012-01-08 00:19:21

2011-12-19 09:13:45

Javaeclipse
點贊
收藏

51CTO技術棧公眾號