保姆级 Go+ 快速入门体验教程,你会吗?

开发 后端
Go+ 1.0 的发布会过去有几天了,想着要不直接干一个 Demo 到本地玩玩,于是就有了这篇文章。

 [[431501]]

本文转载自微信公众号「GoLang全栈」,作者锟。转载本文请联系GoLang全栈公众号。

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 的初始化命令:

  1. go mod init gop 

这里 gop 是你的工程名字,你可以随意。

此时文件夹下面会多一个 go.mod 文件,这里不做过多解释了。

随后开始编写我们的 gop 文件,新建一个 main.gop 文件,写入如下内容:

  1. package main 
  2.  
  3. func main(){ 
  4.  println("hello"

和 Go 的代码很相似,但是 Go 的输出需要使用 fmt 包,在 Go+ 里面则不需要。

现在编译执行下这个文件:

  1. gop run main.go 

你会发现少依赖:

直接在命令行执行他提示的安装命令即可:

  1. go get github.com/goplus/gop/builtin 

安装完毕后,再次执行就可以了:

你会发现他把 gop 文件翻译成了 autogen.go 文件,这个直接用 go 执行那个文件也是一样的效果。

Mac环境特有的问题

如果你是 Mac 环境,你在第一次执行时,你应该会遇到下面这个提示:

此时你大可不必【移到废纸篓】里面,点击取消到【安全性与隐私】的【通用】里面点击【仍然允许】即可。

随后 gop 的提示也是一样的处理方式。

一些 Go+ 的特性

Go+ 给我们提供了很多语法糖的东西给我们,让我们的代码看起来更加的人性化,写起代码来更加丝滑,当然不止语法糖这一个好处,后期可能还会有科学计算方面的支持等。

所以这篇文章接下来就给大家挑一些语法糖给大家说说:

混合切片

这是我给他取的名字哈,在 Go 里面除了 interface 类型的以外,一个切片只能存放一种类型,所以在创建时就得定义好。

但是 Go+ 里面你大可不必关心数据类型,你可以任意地放类型。

  1. func main() { 
  2.  a := [1, "abc", 2.3] 
  3.  println(a) 
  4.  
  5. --- 
  6. $ gop run main.gop  
  7. [1 abc 2.3] 

然后你去看 autogen.go 文件,你会发现,他进行了自动类型推导。

切片的遍历

  1. func main() { 
  2.  a := [1, 2.3, 45] 
  3.  println([item*2 for item <- a]) 
  4.  
  5. --- 
  6. $ gop run main.gop  
  7. [2 4.6 90] 

这种写法其他语言好像也是支持的,类似高阶函数。

更加人性化的错误处理

Go 里面的错误处理机制是最让人烦恼的,所以 Go+ 里面给出了他的处理方式:

  1. expr! // panic if err 
  2. expr? // return if err 
  3. expr?:defval // use defval if err 

怎么用呢?

假如我们需要写一个方法,把 string 类型的转换成 int 类型,如果转换成功返回 int 数据,如果转换异常就返回 0。

下面是 Go 的代码:

  1. func ToInt(in string) int { 
  2.  res, err := strconv.Atoi(in
  3.  if err != nil { 
  4.   return 0 
  5.  } else { 
  6.   return res 
  7.  } 

下面是 Go+ 的写法:

  1. func ToInt(in string) int { 
  2.  return strconv.Atoi(in)?:0 

是不是简洁了很多,这种写法和 swift 很类似。

写在最后的

Python 之所以很多人用,有很多原因,但是有一点是少不了的,那就是他的库多,所以 Python 又称为胶水语言。

所以如果后期 Go+ 里面能纳入更多的库,相信将会是 Go 的重磅炸弹,当然这个还是主要看 Go+ 的社群了。

一起期待 Go+ 未来的进一步动作吧!

责任编辑:武晓燕 来源: GoLang全栈
相关推荐

2021-01-15 09:30:02

Tomcat ApacheJavaServer

2023-05-29 07:39:49

2023-06-26 00:07:14

2023-11-27 00:18:38

2021-03-10 08:55:42

Go数据语言

2021-09-06 11:50:45

Windows 11Windows微软

2021-10-29 23:00:47

Windows 11Windows微软

2021-11-05 10:59:06

元编程语言工具

2023-10-23 00:06:29

2021-10-31 15:46:14

Windows 11Windows微软

2022-09-06 10:39:38

Docker镜像构建

2021-09-13 07:23:52

Go Set 设计

2022-12-01 11:41:24

2022-12-12 11:47:34

WindowsPySpark服务器

2021-09-14 13:55:15

Go开发分布式

2020-07-16 14:25:18

PythonGo前端

2023-07-06 09:01:33

2022-12-02 11:37:47

2022-06-02 07:38:47

Python游戏

2022-09-14 11:31:37

MySQL数据库管理系统
点赞
收藏

51CTO技术栈公众号