GO沒有原生的界面庫,所以不能直接用來寫GUI界面。但最近互聯網上已經涌現出不少成熟、好用的第三方界面庫。使用它們,就同樣可以寫出同C#、C++的界面。而且效率還更勝一籌。
關於Walk界面庫(官方介紹):
Walk是一個寫給Golang的Window應用程序庫套件,它主要用於桌面GUI的開發,但也有更多的東西。
Part One:安裝Walk
在瀏覽這部分前,請確定已經配置安裝完畢go語言的環境。如果沒有,可以參考go官網的Install幫助。另外,注意:這個Walk庫只能運行在Go 1.1.x及以上。
要安裝Walk很簡單,只要運行命令:go get github.com/lxn/walk
等待命令執行完畢,這時候檢查GOPATH的src與pkg下,是否有符合自己計算機環境的walk目錄。(我的電腦的CPU架構為AMD64,則會在%GOPATH%\windows_amd64\github.com\lxn下出現一個walk文件夾與編譯完成的a文件,另外在%GOPATH%\src\github.com\lxn下也會出現walk的源代碼)
我們還要安裝一個工具rsrc,以完成后期的打包工作,執行命令:go get github.com/akavel/rsrc
等待命令執行完成,然后檢查,步驟與上文相仿,不再多說。
Part Two:使用Walk
這里不講述具體的編碼方式,開源的項目都可以自己看懂,而且官方也給了不少的例子,可以讓你徹底了解這個庫。這部分里主要講Walk項目的編譯生成。
和其他語言的界面庫相比,這個庫有一點比較獨特。它所生成的exe文件只有依賴於manifest才能正常運行(在其他GUI程序中,這個文件多數用於生成XP樣式)。而go卻沒有提供資源打包的所有功能(至少在我的LiteIDE中找不到),所以要把manifest嵌入exe文件中,還需要一個工具:rsrc。
這個工具已經在前部分中成功安裝。此工具的作用是簡單地將一些文件打包在syso文件中,go的編譯器就可以把這些文件嵌入到exe文件中了。
嵌入manifest的命令很簡單:rsrc –manifest %manifestpath% –o % sysopath%
比如我們要為test.exe打包一個manifest文件,只要這樣做:rsrc -manifest test.manifest -o rsrc.syso
執行完命令后,把rsrc文件移動到src下的項目目錄,再執行編譯命令。這時候,編譯出來的exe就可以獨立運行了。當然,如果你不喜歡這種方法,還可以把xxx.manifest文件改名為xxx.exe.manifest,程序同樣能執行,但是發布時,必須要帶着此文件一起發布。
這個命令還有很多有趣的功能,如給exe文件加上自己喜歡的圖標,命令為:
rsrc -manifest main.manifest –ico icon.ico -o rsrc.syso
附錄:
網上對syso文件的介紹甚少,經過我對源碼的研究及生成后PE的查看。發現syso文件就是go官方對於“程序對象歸檔”所搞出來的一個東西,說白了就與Win下的資源文件相似。PE查看器也說明了這就是一個資源文件,存放在rsrc程序段中。