• <nav id="26o4m"><source id="26o4m"></source></nav>
  • 我的Go+语言初体验——go【Format】goplus

    红目香薰 2021-12-11 17:28:02

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

    活动地址:【http://www.docjed.com/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语言习惯的同志有好东西用了。

    ...全文
    123 回复 4 打赏 收藏 举报
    写回复
    回复
    切换为时间正序
    请发表友善的回复…
    发表回复
    相关推荐
    发帖
    Go+ 开发者社区
    创建于2021-11-16

    512

    社区成员

    Go+ 官方开发者社区。我们希望向广大的开发者和数据科学家介绍 Go+ 的定位和意义,并邀请更多开发者一起贡献代码、共建 Go+ 生态。 Go+ 官网:https://goplus.org/
    帖子事件
    创建了帖子
    2021-12-11 17:28
    社区公告

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

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

    天天躁夜夜躁狠狠综合2020,日本二区三区欧美亚洲国,自拍另类欧美图区视频一区,青青草国产免费无码