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

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

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

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


前言:

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

50.png



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


1、直观测试效果

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

51.png

点击【Format】之后

52.png


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())
}

53.png

效果如下:

54.png

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)
        }
}

执行测试,无问题。

55.png


点击【Format】格式化效果:

56.png


还是节约了一些的。

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

相关文章
|
2天前
|
JavaScript 前端开发 Go
Go语言的入门学习
【4月更文挑战第7天】Go语言,通常称为Golang,是由Google设计并开发的一种编程语言,它于2009年公开发布。Go的设计团队主要包括Robert Griesemer、Rob Pike和Ken Thompson,这三位都是计算机科学和软件工程领域的杰出人物。
9 1
|
2天前
|
Go
|
3天前
|
分布式计算 Java Go
Golang深入浅出之-Go语言中的分布式计算框架Apache Beam
【5月更文挑战第6天】Apache Beam是一个统一的编程模型,适用于批处理和流处理,主要支持Java和Python,但也提供实验性的Go SDK。Go SDK的基本概念包括`PTransform`、`PCollection`和`Pipeline`。在使用中,需注意类型转换、窗口和触发器配置、资源管理和错误处理。尽管Go SDK文档有限,生态系统尚不成熟,且性能可能不高,但它仍为分布式计算提供了可移植的解决方案。通过理解和掌握Beam模型,开发者能编写高效的数据处理程序。
131 1
|
3天前
|
算法 关系型数据库 MySQL
Go语言中的分布式ID生成器设计与实现
【5月更文挑战第6天】本文探讨了Go语言在分布式系统中生成全局唯一ID的策略,包括Twitter的Snowflake算法、UUID和MySQL自增ID。Snowflake算法通过时间戳、节点ID和序列号生成ID,Go实现中需处理时间回拨问题。UUID保证全局唯一,但长度较长。MySQL自增ID依赖数据库,可能造成性能瓶颈。选择策略时需考虑业务需求和并发、时间同步等挑战,以确保系统稳定可靠。
111 0
|
3天前
|
缓存 NoSQL Go
Go语言中的分布式锁实现与选型
【5月更文挑战第6天】本文探讨了Go语言中分布式锁的实现,包括Redis、ZooKeeper和Etcd三种方式,强调了选型时的性能、可靠性和复杂度考量。通过代码示例展示了Redis分布式锁的使用,并提出了避免死锁、公平性等问题的策略。结论指出,开发者应根据业务需求选择合适实现并理解底层原理,以确保系统稳定和高效。
128 0
|
存储 IDE Java
go语言简单入门
go语言简单入门
140 0
|
缓存 搜索推荐 编译器
Go 语言入门很简单 -- 17. Go Package #私藏项目实操分享#
Go 语言入门很简单 -- 17. Go Package #私藏项目实操分享#
141 0
Go 语言入门很简单 -- 17. Go Package #私藏项目实操分享#
|
编译器 Shell 测试技术
Go 语言入门很简单--技巧和窍门(Tips and Tricks)
Go 语言入门很简单--技巧和窍门(Tips and Tricks)
154 0
Go 语言入门很简单--技巧和窍门(Tips and Tricks)
|
安全 测试技术 Go
Go 语言入门很简单 -- 16. Go 并发互斥锁 #私藏项目实操分享#
Go 语言入门很简单 -- 16. Go 并发互斥锁 #私藏项目实操分享#
132 0
Go 语言入门很简单 -- 16. Go 并发互斥锁 #私藏项目实操分享#
|
存储 小程序 Go
Go 语言入门很简单 -- 14. Go 并发初识 #私藏项目实操分享#
Go 语言入门很简单 -- 14. Go 并发初识 #私藏项目实操分享#
125 0
Go 语言入门很简单 -- 14. Go 并发初识 #私藏项目实操分享#