goplus

https://github.com/qiniu/goplus
https://www.bilibili.com/video/BV1AD4y1S79M
GoPlus(Go+)是一门静态类型语言,与 Go 语言完全兼容。其代码样式类似脚本,并且比 Go 更具可读性,专门用于数据科学。



简单对比:



GoPlus 代码



a := [1, 2, 3.4]
println(a)
Go 代码



package main



func main() {
a := []float64{1, 2, 3.4}
println(a)
}

GoPlus为国内云厂商七牛云推出的一门静态类型语言,与 Go 语言完全兼容。其代码样式类似脚本,并且比 Go 更具可读性,专门用于数据科学。



给人的第一感觉就是披着python外衣的golang,简化了部分golang语法,使用简单灵活



GoPlus脚本文件扩展名为.gop



安装
首先要安装golang开发环境



git clone https://github.com/qiniu/goplus.git
cd goplus && go install -v ./…
执行完这几步后在GOPATH/bin下面会生成GoPlus的命令行工具qrun,qexp,qfmt和qgo
命令说明如下
qrun: 执行工具,qrun xxx.gop 执行gop脚本
qexp: 包装工具,qexp export 生成go包的GoPlus包装层
qfmt: 格式化工具,qfmt xxx.gop 格式化gop脚本
qgo: 转换工具,qgo 将gop文件转换为go文件



语法实例
helloworld.gop
println(“hello world”)



printf(“hello %s”, “world”)
执行:qrun helloworld.gop



map
student := {“name”:”zhangsan”, “age”: 20}
println(student)



students := [{“name”:”zhangsan”,”age”:20},{“name”:”lisi”,”age”:21}]
println(students)



students := [{“name”:”zhangsan”,”age”:20},{“name”:”lisi”,”age”:21},{“name1”:”wangwu”,”age1”:22}]
println(students)



这里map的schema是可以不同的,如name和name1



列表推导式(List comprehension)
list1 := [x*x for x <- [1,2,3]]
println(list1) //[1 4 9]



list2 := [x for x <- [1,2,3,4,5,6,7,8,9], x % 2 == 0]
println(list2) //[2 4 6 8]



map1 := {x: i for i, x <- [1,2,4,8]}
println(map1) //map[1:0 2:1 4:2 8:3]



map2 := {x: i for i, x <- [1,2,3,4,5,6,7,8,9], i % 2 == 0}
println(map2) //map[1:0 3:2 5:4 7:6 9:8]



map3 := {v: k for k, v <- {1:”a”,2:”b”,3:”c”,4:”d”}, k > 2}
println(map3) //map[c:3 d:4]
for循环
for i<- [1,2,3,4,5,6,7,8,9], i % 2 == 0{
println(i)
}
异常处理
import (“strconv”)



func add(x,y string)(int,error){
return strconv.Atoi(x)? + strconv.Atoi(y)?, nil
}



sum, err := add(“1”,”x”)
println(err)
println(sum)
异常处理通过在有异常返回值的函数后加?将异常返回,不用自己判断



工具
Playground https://play.goplus.org/



https://www.jianshu.com/p/4e47591611ef


Category golang