本文转载自微信公众号《GoLang全栈》,作者坤。转载本文请联系GoLang全栈公众号。Go+1.0上线几天过去了,想着做一个demo在本地玩,于是想出了这篇文章。你也可以按照本文一步步搭建你的Go+开发环境。如果只是想体验一下,可以直接进入播放页面进行体验。地址如下:https://play.goplus.org/环境安装首先,我们进入Go+的官网:goplus.org一只可爱的小牛,很有辨别力。从官网可以看出,Go+的定位更偏向工程、STEM教育和数据科学。单击“下载Go+”按钮将直接带您到他们的Github发布页面:我现在看到的是1.0.16版,也许您稍后会看到。这里可以根据自己的系统下载相应的包。我用的是Mac电脑,所以选择了Darwin包。下载解压后,应该可以看到2个可执行的二进制文件:这个时候我们需要把这两个二进制文件,已经添加到你的环境变量目录下,这样我们就可以在任意文件夹下执行了gopxxx命令。这里我选择放在GOPATH下的bin目录下。这样就完成了安装。开发工具和插件有人问有没有官方的开发工具,我在官网上好像没有找到。所以我这里使用VScode作为开发工具,因为安装插件方便。首先,我们需要在插件中心找到一个叫做goplus的插件:安装好之后,我们就可以开始写代码了。编写Demo代码我在桌面上新建了一个名为gop的目录,用vscode打开。因为Go+其实是Go的扩展,其开发环境还是需要依赖Go。如果你在GOPATH下还没有新建项目,需要使用GoModel来处理依赖,所以这里我们在项目目录下执行GoModel的初始化命令:gomodinitgop其中gop是你的项目名,随便你怎么弄.这时文件夹下会多出一个go.mod文件,这里就不多解释了。然后开始编写我们的gop文件,新建一个main.gop文件,写入如下内容:fmt包,在Go+中不需要。现在编译执行这个文件:goprunmain.go会发现依赖少了:直接在命令行执行他提示的安装命令即可:gogetgithub.com/goplus/gop/builtin安装完成后再次执行:你会不会发现他把gop文件翻译成了autogen.go文件,直接用go执行那个文件也是一样的效果。Mac环境特有的问题如果你是Mac环境,第一次执行应该会遇到如下提示:此时不需要【移至垃圾箱】,点击取消进入【安全并点击隐私[常规]中的[允许静止]。随后的gop提示也以相同的方式处理。Go+的一些特性Go+为我们提供了很多语法糖,让我们的代码在写代码的时候看起来更人性化,更流畅。当然,不仅仅是语法糖的好处,可能还有科学计算的支持等等。所以本文接下来,我会挑一些语法糖给大家讲讲:mixedslice是我给他起的名字.在Go中,除了接口类型,一个slice只能存储一种类型,所以在创建时必须定义它。但是在Go+中,你不用关心数据类型,你可以任意放类型。funcmain(){a:=[1,"abc",2.3]println(a)}---$goprunmain.gop[1abc2.3]然后你去autogen.go这个文件,你会发现他带了out自动类型推导。切片遍历funcmain(){a:=[1,2.3,45]println([item*2foritem<-a])}---$goprunmain.gop[24.690]这种写法好像其他语言也支持,类似高阶函数。更人性化的错误处理Go中的错误处理机制是最让人讨厌的,所以Go+给出了它的处理方法:expr!//paniciferrexpr?//returniferrexpr?:defval//usedefvaliferr怎么用呢?如果我们需要写一个方法将string类型转换成int类型,转换成功返回int数据,转换异常返回0。下面是Go代码:funcToInt(instring)int{res,err:=strconv.Atoi(in)iferr!=nil{return0}else{returnres}}下面是Go+的写法:funcToInt(instring)int{returnstrconv.Atoi(in)?:0}是不是简洁多了,这种写法和swift很像。写在最后的Python被很多人使用的原因有很多,但是有一点是不可缺少的,那就是它有很多库,所以Python也被称为胶水语言。所以如果后期能在Go+中加入更多的库,相信会是Go的一鸣惊人。当然,这主要取决于Go+社区。让我们一起期待Go+未来的更多作为吧!
