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
的插件:
安装完毕,我们就可以开始编写代码了。
我在我的桌面上新建了一个名为 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 环境,你在第一次执行时,你应该会遇到下面这个提示:
此时你大可不必【移到废纸篓】里面,点击取消到【安全性与隐私】的【通用】里面点击【仍然允许】即可。
随后 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 的重磅炸d,当然这个还是主要看 Go+ 的社群了。
一起期待 Go+ 未来的进一步动作吧!
最后,如果觉得分享有帮助,记得三连支持我们
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)