最詳細的 Go - 快速入門體驗教程
Go+ 1.0 的發佈會過去有幾天了,想着要不直接幹一個 Demo 到本地玩玩,於是就有了這篇文章。
你也可以根據這篇文章一步一步的搭建你的 Go+ 開發環境。
如果你只是想體驗下,可以直接到 play 頁面體驗,地址如下:
https://play.goplus.org/
環境安裝
首先我們去到 Go+ 的官網:goplus.org
一頭可愛的小牛牛,非常具有七牛的辨別度。
根據官網可以看出 Go+ 的定位更多的是往工程、STEM 教育和數據科學這幾個方面。
點擊 Download Go+ 按鈕,就會直達他們的 Github Release 頁面:
我現在看到的是 1.0.16 版,或許你看到時版本會更高些。
這裏根據你的系統下載對應的包即可,我使用的 Mac 電腦,所以選擇 Darwin 的包。
下載解壓後,應該能看到有 2 個可執行的二進制文件:
此時我們就需要把這兩個二進制文件放到,已經添加到你的環境變量的目錄下面,方便我們可以在任意文件夾下執行 gop xxx 命令。
我這裏選擇放到 GOPATH 下面的 bin 目錄下面。
到此就安裝完畢了。
開發工具和插件
有人問有官方的開發工具沒,我好像沒在官網找到有。
所以我這裏使用的 VScode 作爲開發工具,因爲方便安裝插件。
首先我們需要在插件中心找到一個名叫 goplus 的插件:
安裝完畢,我們就可以開始編寫代碼了。
編寫 Demo 代碼
我在我的桌面上新建了一個名爲 gop 的目錄,並用 vscode 打開了。
因爲 Go+ 其實是對 Go 進行了一些擴展,其開發環境還是需要依賴 Go 的。
如果你沒在 GOPATH 下新建工程,就需要使用 Go Model 來處理依賴,所以我們這裏在工程目錄下面執行下 Go Model 的初始化命令:
go mod init gop
這裏 gop 是你的工程名字,你可以隨意。
此時文件夾下面會多一個 go.mod 文件,這裏不做過多解釋了。
隨後開始編寫我們的 gop 文件,新建一個 main.gop 文件,寫入如下內容:
package main
func main(){
println("hello")
}
和 Go 的代碼很相似,但是 Go 的輸出需要使用 fmt 包,在 Go+ 裏面則不需要。
現在編譯執行下這個文件:
gop run main.go
你會發現少依賴:
直接在命令行執行他提示的安裝命令即可:
go get github.com/goplus/gop/builtin
安裝完畢後,再次執行就可以了:
你會發現他把 gop 文件翻譯成了 autogen.go 文件,這個直接用 go 執行那個文件也是一樣的效果。
Mac 環境特有的問題
如果你是 Mac 環境,你在第一次執行時,你應該會遇到下面這個提示:
此時你大可不必【移到廢紙簍】裏面,點擊取消到【安全性與隱私】的【通用】裏面點擊【仍然允許】即可。
隨後 gop 的提示也是一樣的處理方式。
一些 Go+ 的特性
Go+ 給我們提供了很多語法糖的東西給我們,讓我們的代碼看起來更加的人性化,寫起代碼來更加絲滑,當然不止語法糖這一個好處,後期可能還會有科學計算方面的支持等。
所以這篇文章接下來就給大家挑一些語法糖給大家說說:
混合切片
這是我給他取的名字哈,在 Go 裏面除了 interface 類型的以外,一個切片只能存放一種類型,所以在創建時就得定義好。
但是 Go+ 裏面你大可不必關心數據類型,你可以任意地放類型。
func main() {
a := [1, "abc", 2.3]
println(a)
}
---
$ gop run main.gop
[1 abc 2.3]
然後你去看 autogen.go 文件,你會發現,他進行了自動類型推導。
切片的遍歷
func main() {
a := [1, 2.3, 45]
println([item*2 for item <- a])
}
---
$ gop run main.gop
[2 4.6 90]
這種寫法其他語言好像也是支持的,類似高階函數。
更加人性化的錯誤處理
Go 裏面的錯誤處理機制是最讓人煩惱的,所以 Go+ 裏面給出了他的處理方式:
expr! // panic if err
expr? // return if err
expr?:defval // use defval if err
怎麼用呢?
假如我們需要寫一個方法,把 string 類型的轉換成 int 類型,如果轉換成功返回 int 數據,如果轉換異常就返回 0。
下面是 Go 的代碼:
func ToInt(in string) int {
res, err := strconv.Atoi(in)
if err != nil {
return 0
} else {
return res
}
}
下面是 Go+ 的寫法:
func ToInt(in string) int {
return strconv.Atoi(in)?:0
}
是不是簡潔了很多,這種寫法和 swift 很類似。
寫在最後的
Python 之所以很多人用,有很多原因,但是有一點是少不了的,那就是他的庫多,所以 Python 又稱爲膠水語言。
所以如果後期 Go+ 裏面能納入更多的庫,相信將會是 Go 的重磅炸彈,當然這個還是主要看 Go+ 的社羣了。
一起期待 Go+ 未來的進一步動作吧!
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/IPAxcQXOe4_3S1OTDuu3kg