在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
从JavaScript转到Go,我遇到了一些“ 抱怨?! 最终变成“时刻”的时刻, 哈哈,好吧! ”片刻。 更雄辩地说,如果您是JavaScript / TypeScript开发人员并考虑尝试Go,那么本文适合您。 在Orbs (面向消费者应用程序的区块链)工作期间,我参与了TypeScript的参考实现工作-我从头开始实现了共识算法 。 最近,我们开始着手Go语言的参考实现。 我的任务是将共识算法移植到Go中-您可以在此处查看转换后的代码。 相似之处
(大)差异除了以下列表之外,还有许多其他区别,但是我发现对于来自JavaScript背景的开发人员来说,这些是最有趣的。
“哇!! 哈,好吧” 您应该了解的一件事是,Go 很有主见。 例如关于语法,在Go中,您必须将 没有OOPGo的构造方式使得不可能实现类,继承和多态性(或至少非常困难)。 开头是“ 我不喜欢那个! ”变成“ 嗯,也许那更好! 当我了解Go正在推动您使用合成而非继承时。 捷径在Go中,有许多快捷方式。 几乎感觉到可以用更少的字符在Go中编写的任何内容。 // The long way // The short way 这会使您的学习曲线更加陡峭,但是如果坚持使用Go,最终(可能)您会喜欢它。 映射/缩小 Go是键入的,但没有泛型 。 这意味着您没有类似lodash的map / reduce函数。 这个“ Whaaat ”没有以“ haa ok ”结尾。 配套 当我第一次安装Go并想要创建一个项目时,我以为我会创建一个文件夹,并将所有代码放在这里,构建它,然后运行...不。 Go通常不是这样操作的。 您的所有项目都应该在同一个全局 这种方法存在很多问题,例如项目的依赖项位于同一 Golang确实支持 有很多尝试来解决这个问题,但是知道当前Go中的依赖可能很痛苦。 测验Golang非常喜欢测试,因此当编译器检测到测试文件(文件名为_test.go )时,它将在构建时自动排除测试代码。 句法在您深入之前,让我简要介绍一下我们的工作方式: 基本规则
var arr = [3]int{
var ThisIsPublic = "You can access this variable from outside" 基本类型// common types // without initialisation // one liner // short version with inference 循环// you should be familiar with this // while // infinite loop 流量控制/// yep, no parenthesis // switch no need to add `break` 功能// simple function // multiple return values // named return values 当然,这只是冰山一角。 还有许多其他高级功能,例如通道,结构和接口,但我将在以后的文章中介绍。 结论Go非常有趣,非常快,并且具有出色的GC。 在谈论并发时,它确实很出色,并且对如何编写代码非常有见地。 不利的一面是,程序包管理并不出色,缺少泛型也有点令人讨厌。 因此,如果您想为服务器做一些事情,并且希望它能非常快地工作,那么Go是一个不错的选择。 喜欢你读的书吗? 查看我们的GitHub项目并加入社区: orbs-network / orbs-network-go
Go中的Orbs平台参考实现。 通过创建一个 github.com 来为 orbs -network / orbs-network-go开发做出贡献 orbs-network / orbs-network-typescript
Monorepo for Orbs平台参考实现— Orbs-network / orbs -network- typescript github.com 加入Orbs社区:
From: https://hackernoon.com/introduction-to-go-for-javascript-developer-3e783b409e52 |
请发表评论