微軟推出 G#:一種用於 .NET 的類 Go 語言

圖片

21CTO導讀:微軟.NET體系與Go語言相兼容的語言G#。

微軟新推出一種程式語言 G#,該語言的結構是 .NET 與 Go 語言的混合體。這種架構設計使它成為一種非常靈活的工具。

微軟已經將 .NET 開源,不僅加快了平台的發展速度,也使得基於 .NET 執行環境與編譯器來建構新的語言與功能成為可能。同時,Visual Studio Code 的可擴充性也讓開發者能夠輕鬆地使用這些新平台所提供的工具。

在 .NET 平台上,一個頗具吸引力的新專案就是類似 Go 語言的 G#。G# 的目標領域涵蓋系統程式設計與行動應用程式開發,旨在交付小型、安全且可供其他 .NET 應用程式使用的程式庫。

圖片

G# 汲取了 Go、Kotlin 與 Swift 的經驗,並利用 NuGet 與其他類似的程式碼儲存庫服務,在成熟的 .NET 平台上建構程式碼,使其能夠與 .NET 組件與程式庫相容。

G# 的開發基於 GitHub,其團隊發布週期非常快速。

GitHub:https://github.com/GregoriBrunoFelicio/G-Sharp

圖片

G# 入門

G# 的入門非常簡單。

你需要一個受支援的 .NET 版本,以及適用於目標作業系統的對應 SDK。G# 所產生的程式碼相容 .NET 8 到 .NET 10,但建議使用 .NET 10。G# SDK 與範本可從 NuGet 取得,這確保你可以透過 .NET CLI 安裝並執行 G#。

最快速的入門方法是安裝 G# 範本,然後使用這些範本建立一個主控台應用程式。之後,你可以使用你選擇的開發工具開啟該應用程式並開始擴充。基本應用程式的結構非常簡單,包含一個專案檔、一個程式 .gs 檔,以及一個用於管理套件與程式庫的 NuGet 設定,並支援本地 SDK(如果你是從原始碼建構 G#,這會非常有用)。

建構並執行預設主控台範本的速度很快,在基於 Arm 的 Windows PC 上只需四秒多即可輸出結果,這對於建構與偵錯大型應用程式來說非常有利。

除了基本的主控台實作之外,已安裝的範本還提供了多種不同類型的應用程式與程式庫的選項。此外,Visual Studio Marketplace 上也有一個適用於 G# 的 Visual Studio Code 擴充功能可以下載。該擴充功能包含了對應的語言伺服器元件,能夠加快開發速度。文件中提供了一個命令列安裝選項,方便你安裝此擴充功能,無需再費力尋找所需檔案,下次開啟 VS Code 時即可直接開始使用 G# 進行編碼。

或者,你可以直接使用 G# 語言自身的 gsc 編譯器,而不是透過 .NET CLI 中的 MSBuild 來呼叫它。當你需要輸出針對特定 .NET 版本或編譯為組件以供其他 .NET 語言使用的程式碼時,這種方法非常有用。這種方法避免了使用直譯式程式碼,讓你可以直接交付預先編譯的二進位檔。

在 G# 語言內部

G# 語言本身非常直觀。程式碼以套件的形式組織,可執行部分定義為 funcs。

預設情況下,G# 使用 .NET 的 System 命名空間,因此你可以直接使用熟悉的結構,而不需要學習不同的方法來實作常用功能。如果你不想讓 System 命名空間預設匯入 .NET,可以在編譯器設定中停用匯入。

每個函式都可以接受參數並回傳值,參數型別在參數清單中宣告。參數清單可以以回傳值的型別宣告結尾,以確保回傳的是預期的資料。大多數型別都包含長度資訊,例如 int64,當然也有一些其他語言中常用型別的別名。字串型別允許加入對齊方式與格式化資訊。除了函式之外,你還可以定義結構體與類別來處理變數,其中結構體處理值,類別處理參考。同樣地,資料結構體與類別允許你將變數視為資料,進行複製與指派操作。

G# 的語言結構大部分都很熟悉,尤其是如果你習慣使用 Go 等語言的話。它提供了一些有趣的捷徑,例如 if let 可以在解析函式參數時檢查空值。你可以結合 if let 與 G# 的例外處理機制來管理更複雜的程式流程。其他特性包括使用 for in map 來走訪集合,允許你在函式中傳遞並使用任意長度的陣列,而無需在執行操作之前先確定陣列長度。

在分散式系統中使用 G#

G# 旨在支援非同步程式設計,這對於我們開發分散式應用程式至關重要。

它使用常見的 async 與 await 結構,這裡使用的是 async func 非同步操作。

有趣的是,G# 允許你將一組非同步操作封裝在一個作用域中,這樣你就可以執行一系列操作並管理失敗,同時保留成功操作的結果以供應用程式的其他地方使用。

這使得開發者可以將父操作與子操作關聯起來,確保父操作始終在子操作之後回傳。我們可以使用非同步序列來處理串流,但如果願意的話,也可以使用 Go 擴充套件來支援類似 Go 語言的通道。

作者:聆聽音樂的魚

參考:

https://news.ycombinator.com/item?id=48871721

相關文章推薦

分享網址
AINews·AI 新聞聚合平台
© 2026 AINews. All rights reserved.