Go 真的也可以進行 GUI 開發:還有這樣的圖書呢

大家好,我是站長 polarisxu。

最近看到一個視頻:Building a Chess GUI with Fyne[1],講解如何使用 Go 構建一個完整的國際象棋應用程序。這個視頻演示瞭如何構建 UI,添加動畫,交互和拖放。所有這些都基於 Fyne[2] 這個庫構建,可以安裝到桌面和移動設備!這個國際象棋的項目地址:https://github.com/andydotxyz/chess。

出於好奇,我深挖了一下,訪問了視頻作者的個人網站:https://andy.xyz/,發現它就是 Fyne 的作者:Andrew Williams。他還創建了 FyneLabs[3],專門支持 Fyne 的發展。

01 一本 Go GUI 圖書

同時,通過作者的網站,我發現他寫了一本書:《GUI Application Development in Go》[4],作者在這本書裏對比了 Go 中可用的 GUI 工具包,包括一些傳統的工具包(Walk[5]、 andlabs UI[6]、 Go-GTK[7]、 qt[8])和一些更前沿的項目(Shiny[9]、 nk[10]、 Fyne[11])。通過這些項目,作者探討什麼樣的結構和代碼更適合開發 Go GUI 程序。

通過 GTK+ 的 Go 綁定構建了一個電子郵件應用程序,界面如下圖,看起來還可以?

另外有一個圖片查看器,使用 Fyne 構建的,界面如下圖:

在這本書中,作者還討論瞭如何規劃和構建一個 GUI 應用程序以及它所依賴的代碼。此外還了如何使用單元測試、持續集成,以及在集成網絡和雲服務時如何保持可維護的代碼。最後介紹瞭如何打包和分發跨平臺應用程序,以便交付給最終用戶。

該書在 Amazon[12] 上可以買到,還有 Kindle 版,出版時間是 2019 年 2 月。

02 一個 Fyne 圖書

通過上面那本書,我又發現了另外一本書:《Building Cross-Platform GUI Applications with Fyne》[13],副標題是:Create beautiful, platform-agnostic graphical applications using Fyne and the Go programming language。

這也是 Andrew Williams 寫的,出版時間是 2021 年 1 月底。

上一本書主要對比現存的 Go GUI 庫,以及探索一個更合適的 Go GUI 開發方案,而這本書,主要講述如何使用 Fyne 這個 Go GUI 工具包開發出漂亮的、跨平臺的 GUI 應用程序。

該書主要讓你:

本書主要通過示例項目來講解,一共有五個示例項目,你將學習如何有效構建應用程序,專注於每個主要區域,包括畫布,佈局,文件處理,小部件,數據綁定和主題。本書還將向你展示已完成的應用程序如何在桌面計算機,筆記本電腦和智能手機上運行。完成這些項目後,你還可以將它們分發各種應用商店中供別人下載使用。

如果你堅持學完該書,應該能夠創建出漂亮的跨平臺圖形應用程序。

以下是該書目錄:

  1. A Brief History of GUI Toolkits and Cross-Platform Development

  2. The Future According to Fyne

  3. Window, Canvas, and Drawing

  4. Layout and File handling

  5. Widget Library and Themes

  6. Data Binding and Storage

  7. Building Custom Widgets and Themes

  8. Project Structure and Best Practices

  9. Bundling Resources and Preparing for Release

  10. Distribution - App Stores and Beyond

  11. Appendix A: Developer Tool Installation

  12. Appendix B: Installation of Mobile Build Tools

  13. Appendix C: Cross-Compiling

03 總結

雖然 GUI 不是 Go 的主戰場,但作爲一門通用編程語言,一些第三方庫證明,Go 也是可以進行 GUI 開發的。如果你對 Go 語言開發 GUI 感興趣,可以看看本文介紹的這兩本書,特別是 Fyne 這本。從 Fyne 的發展看,前途還是值得期待的。

當然,你也可以直接研究文章開頭提到的國際象棋項目。

以後請別說 Go 不能開發 GUI 程序了~ 當然,我們可以將 Go GUI 開發作爲自己的愛好,業餘研究,不能指望通過它找工作啥的。

你會學習下 Go 的 GUI 開發嗎?歡迎留言交流。

參考資料

[1]

Building a Chess GUI with Fyne: https://www.youtube.com/watch?v=zlPDWBLhn6c

[2]

Fyne: https://fyne.io/

[3]

FyneLabs: https://fynelabs.com/

[4]

《GUI Application Development in Go》: https://andy.xyz/2019/03/07/meet-the-first-book-about-golang-gui-programming/

[5]

Walk: https://github.com/lxn/walk

[6]

andlabs UI: https://github.com/andlabs/ui

[7]

Go-GTK: https://github.com/mattn/go-gtk

[8]

qt: https://github.com/therecipe/qt

[9]

Shiny: https://github.com/golang/exp/tree/master/shiny

[10]

nk: https://github.com/golang-ui/nuklear

[11]

Fyne: https://github.com/fyne-io/fyne

[12]

Amazon: https://www.amazon.com/Hands-GUI-Application-Development-cross-platform-ebook/dp/B07GYLYSCT/ref=sr_1_1

[13]

《Building Cross-Platform GUI Applications with Fyne》: https://www.amazon.com/Building-Cross-Platform-Applications-Fyne-platform-agnostic-ebook/dp/B08PKTNVBQ/ref=pd_rhf_dp_s_ci_mcx_mr_hp_d_2

公衆號

我是 polarisxu,北大碩士畢業,曾在 360 等知名互聯網公司工作,10 多年技術研發與架構經驗!2012 年接觸 Go 語言並創建了 Go 語言中文網!著有《Go 語言編程之旅》、開源圖書《Go 語言標準庫》等。

堅持輸出技術(包括 Go、Rust 等技術)、職場心得和創業感悟!歡迎關注「polarisxu」一起成長!也歡迎加我微信好友交流:gopherstudio

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/2kms7zoK39CL6aVSWrpAbQ