mt反编译源码-在使用 Python 编程 5 年后,我转向了 Go!

出品| CSDN(ID:CSDNNews)

以下为译文:

我喜欢Python。 在过去的两年里,它一直是我选择的语言。 Python 非常友好且易于学习,同时仍然保持超强的效率。

从创建简单的脚本和 Web 开发,到数据可视化和机器学习,您几乎可以随时使用它。

但随着 Go 的成熟、其强大的用户基础,以及越来越多的公司在成功的基准测试后决定转向 Go,我更广泛地阅读了 Go,并思考如何将它添加到我的工具集中并将其应用到我的工作中。

这篇文章不会讨论Python和Go哪种编程语言更好,网上有很多关于这个主题的帖子和比较,我觉得这些问题非常依赖于项目。

在这篇文章中,我将向您介绍我从 Python 到 Go 的旅程,并为您提供一些指导,并让您了解一些帮助我在这段旅程中取得成功的资源。

我遇到的主要差异

当然,作为第一步,我浏览了令人惊叹的官方“Tour Of Go”(http://www.golang.com/go/go/TourOfGo),它确实让我对 Go 句型有了很好的基础了解。

mt反编译源码-在使用 Python 编程 5 年后,我转向了 Go!

为了强化这些知识,我阅读了《Go for Python Programmers》电子书,这使我能够继续下一步,即尝试和错误,我认为这是最具教育意义的。

我采用了以前在 Python 中使用过的常用函数,例如 JSON 序列化或使用 HTTP 调用,并尝试将它们编码到 Go 中。

通过将 Python 中的类似概念应用到 Go,同时仍然结合该语言的静态特性,我遇到了 Go 和 Python 之间的一些关键差异。

1、项目布局

首先,Python 通常不需要特定的目录层次结构,而 Go 则不然。

Go 使用“标准”布局,稍微复杂一点,这会导致更多工作,但好处是拥有结构良好的代码库。 该代码库鼓励模块化代码并随着项目规模的增长保持秩序。

官方的“如何编写 Go 代码”( ) 有一节解释了如何构建工作区。

2. 静态和强类型

Go 是一种静态类型语言,由于您习惯了 Python 或 Ruby 等动态类型语言,所以一开始可能会感到不舒服。

毫无疑问,动态语言更容易出错,需要在输入验证方面付出更多努力,以避免常见的语法错误或解析错误。 想象一个计算两个整数之和的函数,但实际上无法保证该函数的用户不会将字符串传递给该函数,因此这将导致 TypeError。

在 Go 中不会发生这种情况,因为你需要声明每个变量的类型,这意味着你的函数可以获得什么类型的变量,以及函数将返回什么类型的变量。

一开始这有点烦人,感觉它让我的编码速度变慢了很多,但是经过短暂的阅读和编写 Go 代码后,你就习惯了它,它实际上节省了时间,让你的代码变得越来越容易强壮的。

3. 固有的并发性

Go 具有固有的并发特性。 它支持goroutines和channels的使用,可以让并发变得极其方便。

首先,通道的概念可能有点棘手,很容易将其视为某种数据结构或排队实现。 然而,经过一些阅读后,它们变得如此简单,您可以真正享受它们带来的价值并充分利用它们。

这是 goroutine 和通道的简单可视化:

package main
func main() {
 // create new channel of type int
 ch := make(chan int)
// start new anonymous goroutine
 go func() {
 // send 42 to channel
 ch <- 42
 }()
 // read from channel
 <-ch
}

有关更多示例,请查看 Hootsuite 现实生活实现(),或查看 this(),这是来自 ArdanLabs 的精彩解释。

4. 使用 JSON

mt反编译源码-在使用 Python 编程 5 年后,我转向了 Go!

好吧,不再有 json.loads() 可供您使用。

在Python中,反序列化JSON对象非常简单,只需使用json.loads即可!

但在 Go 中,作为一种静态类型语言,这种简单的操作可能会更加复杂。

在 Go 中,您将 JSON 解析为先前定义的结构。 任何非结构化数组都将被忽略,这是一件好事。 这可以被认为是双方之间的一种预定义合同。 在这种模式下,您不需要对收到的 JSON 数据感到“惊讶”,并且 JSON 数组和类型需要双方“同意”。

{
 “first”: “Elad”,
 “last”: “Leev”,
 “location”:”IL”,
 “id”: “93”
}

type AccountData struct {
 First string `json:"first"`
 Last string `json:"last"`
 Location string `json:"location"`
 ID string `json:"id"`
}

当然,您始终可以在没有结构的情况下反序列化 JSON,但如果可能的话应该避免,因为拥抱语言的静态特性总是更好。

为了更好地理解 Go 中的 JSON 编码,您可以查看这篇文章 ( ),或使用“Go By Examples”( ),这是您将拥有的终极作弊资源。

懒得将 JSON 转换为 Go 结构? 没问题 - 这个工具将为您做到这一点()。

5. 干净的代码

Go 编译器将始终尝试保持代码干净。

Go 编译器将未使用的变量视为编译错误,并且 Go 有一种特殊的方式让机器处理大多数格式问题。

Go 在保存或编译时会运行 gofmt 程序,这将处理大多数格式问题。

您不关心其中一个变量吗? 再说一遍——没问题! 只需使用 _(下划线)并将其分配给空标识符即可。

包含有关 Go 格式信息的必读文档是“Effective Go”()。

我的旅程还在继续

找到合适的库和框架

我已经习惯了像 Flask、Jinja2、Requests 和 Kazoo 这样的 Python 框架和库,我真的很害怕找不到适合 Go 的框架和库。

但正如你所猜测的,伟大的 Go 社区拥有自己独特的库,甚至可以让你完全忘记原来的库。

mt反编译源码-在使用 Python 编程 5 年后,我转向了 Go!

以下是我的一些偏好 -

我强烈推荐的其他一些库是:Viper、Gonfig 和 Awsome-Go。

其他资源

以下是一些对我的 Go 之旅有明显帮助的其他资源。

Francesc Campoy () - 您绝对需要查看他的 YouTube 频道和 GitHub 个人资料 ()。 Francesc 还有一些很棒的工作,例如 Go Tooling in Action () 和 Web Applications Workshop ()。 GopherCon 视频(,需要科普在线) Go Web Examples() Golang Weekly(),Gopher Academy(),Golang News() Twitter 帐户(需要科普在线)。

总结

作为三年来的 Python 狂热者,我担心过渡到 Go 会很乏味。

但我真的很高兴看到一个非常强大的社区贡献和维护大量资源。 像这样的社区可以帮助您顺利过渡到 Go。

Go 是当今增长最快的编程语言之一mt反编译源码mt反编译源码,我希望未来 Go 能够成为 Google 编写云应用程序和基础设施的首选语言。

对于 Go 来说,这是一个激动人心的时刻,我鼓励您尝试一下并成为 Gophers!

原来的:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 mt反编译源码-在使用 Python 编程 5 年后,我转向了 Go! https://www.wkzy.net/game/186627.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务