极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/03:59
登录|注册

从Python转向Go,二者有5个主要差异

讲述:丁婵大小:1.82M时长:03:59
越来越多的开发者,应市场要求,开始转变他们的首选编程语言。开发者埃拉德·莱夫(Elad Leev)就经历了从 Python 到 Go 的转变,他曾是一名 5 年 Python 狂热用户,近期转向了 Go,并且发文分享了他的转变历程,如下。
我喜欢 Python,在过去的五年里,它一直是我的首选语言。
Python 非常友好且易于学习,并且几乎可以用它来做任何事情,包括从创建简单的脚本,Web 开发,到数据可视化以及机器学习。
但随着 Go 的日趋成熟,越来越多的公司在成功进行基准测试后决定转向 Go ,这驱使我阅读了大量 Go 的相关文章,思考如何将其添加到我的工具集以便在工作中发挥它的好处。
当然,这篇文章不会去讨论 Python 或 Go 哪种编程语言更好,而是介绍一些我从 Python 转到 Go 的经历,并提供一些技巧。
自然,作为转到 Go 的第一步,我浏览了“ Tour of Go ”的官方网站,在这里我学到了很多 Go 的基础知识。为了加强这些知识,我还阅读了名为 Go for Python Programmers 的电子书,使我能够继续下一步探索。
我使用以前在 Python 中常用的函数,并尝试在 Go 中编写 JSON 序列化或 HTTP 调用。通过这样在 Go 中应用 Python 中的类似概念,并且仍然保持语言的静态特性,我感受到了 Go 和 Python 之间的一些主要差异。
第一点,关于项目布局。 Python 通常不需要特定的目录层次结构,Go 却是需要的。Go 使用了“标准”布局,虽然带来了更多的工作,但却拥有了结构良好的代码库。官方的文章“ 如何编写 Go 代码 ”中有一个章节清晰地解释了如何构建工作区
第二点,关于静态和强类型。 Go 是一种静态类型的语言,由于开发者们习惯使用 Python 或 Ruby 等动态类型语言,在初期可能会感到不太舒服。相较而言,动态语言更容易出错,并且在输入的验证上需要花费更多精力来防止常见语法或解析错误。然而这种情况不会发生在 Go 中,因为 Go 需要声明每个变量的类型,函数可以获得哪种类型的变量,以及函数将返回哪种类型的变量。
第三点,关于本机并发。 Go 利用 Goroutines 和 channels 支持本机并发。channels 的概念可能有点小麻烦,并且很容易被当成某种数据结构或排队的实现。
第四点,关于使用 JSON。在 Python 中,反序列化 JSON 对象非常简单,只需使用 json.loads 即可。但在 Go 中,作为一种静态类型语言,这种简单的操作反而会更加复杂。
在 Go 中,可以将 JSON 解析为一种预定义结构。任何不适合该结构的字段都将被忽略,这是一个好事,可以把它当成双方之间的预定义协议。当然,你仍然可以在没有结构的情况下反序列化 JSON,但是如果可能的话应该避免这样做,保持语言的静态性质总是更好的选择。
第五点,关于清洁代码。 Go 编译器始终尽力保持代码的清洁,将未使用的变量视为编译错误。而且,Go 采用了独特的方法让计算机能处理大多数格式问题。在保存或编译时 Go 会运行 Gofmt 的程序,它会处理大多数的格式问题。
总之,作为一名曾经狂热的 Python 用户,我担心过渡到 Go 会很痛苦,我真的很开心能有 Tour of Go 这样一个社区,可以帮助开发者们顺利过渡到 Go。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • 半橙汁
    有时候真的很难抉择要转向何种语言,何种方向,就如高考填写志愿一样,雾里探花水中望月~
    1
    1
收起评论
显示
设置
留言
1
收藏
83
沉浸
阅读
分享
手机端
快捷键
回顶部