我的Go+语言初体验——go【Format】goplus

红目香薰 社区中级贡献者
新星创作者: 人工智能技术领域
优质创作者: 大数据技术领域
领域专家: 后端开发技术领域
2021-12-11 17:28:02

 欢迎大家参与【我的Go+语言初体验】活动:

活动地址:【https://bbs.csdn.net/topics/603464006?utm_source=1594742339

前言:

goplus的开发者许先生向群内推荐了一个很酷炫的功能你可以贴一段 Go代码,然后点 Format,得到对应的 Go+ 风格的代码:

说完我就去做了一下测试,那是相当简洁啊。

1、直观测试效果

package main
 
import "fmt"
 
func main() {
        fmt.Println("Hello, new goplus世界")
}

点击【Format】之后

2、函数格式化(前10个月的兔子):

写个函数调用看看:

package main

func fib() func() int {
        a, b := 0, 1
        return func() int {
                a, b = b, a+b
                return a
        }
}
 
func main() {
        f := fib()
        println(f(), f(), f(), f(), f(),f(),f(),f(),f(),f())
}

效果如下:

3、多函数格式化效果(皮亚诺整数)

package main
 
import "fmt"
 
type Number *Number
 
func zero() *Number {
        return nil
}
 
func isZero(x *Number) bool {
        return x == nil
}
 
func add1(x *Number) *Number {
        e := new(Number)
        *e = x
        return e
}
 
func sub1(x *Number) *Number {
        return *x
}
 
func add(x, y *Number) *Number {
        if isZero(y) {
                return x
        }
        return add(add1(x), sub1(y))
}
 
func mul(x, y *Number) *Number {
        if isZero(x) || isZero(y) {
                return zero()
        }
        return add(mul(x, sub1(y)), x)
}
 
func fact(n *Number) *Number {
        if isZero(n) {
                return add1(zero())
        }
        return mul(fact(sub1(n)), n)
}
 
func gen(n int) *Number {
        if n > 0 {
                return add1(gen(n - 1))
        }
        return zero()
}
 
func count(x *Number) int {
        if isZero(x) {
                return 0
        }
        return count(sub1(x)) + 1
}

 
func main() {
        for i := 0; i <= 9; i++ {
                f := count(fact(gen(i)))
                fmt.Println(i, "! =", f)
        }
}

执行测试,无问题。

 点击【Format】格式化效果:

 还是节约了一些的。

有GO语言习惯的同志有好东西用了。

...全文
372 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-编程语言 发布问题, 以便更快地解决您的疑问

1,097

社区成员

发帖
与我相关
我的任务
社区描述
Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。 Go+ 官网:https://goplus.org/
其他 企业社区
社区管理员
  • Go+
  • 杨东杰
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

本社区为 Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。

Go+ 官网:https://goplus.org/
GitHub地址:https://github.com/goplus/gop

试试用AI创作助手写篇文章吧