最近学习了 Go 语言,做下记录。
Go 的来历
和 C、C++ 相比, Go 是一门很年轻的语言。2007 年,在 Google 的内部,有三位大佬因为 C++ 的复杂性、构建编译速度很慢和对并发支持不好等原因,便决定开发一门新的语言,于是他们基于 C 语言,做了功能的删减和新增,便有了 Go 的诞生。
2009 年 10 月 30 日,在 Google Techtalk 上,Go 语言的初始三位创始人之一的罗伯·派克做了一次关于 Go 语言的演讲,这也是 Go 语言第一次公开露面。十天后,谷歌正式宣布 Go 语言项目开源。
2012 年 3 月 28 日,Go 1.0 版本正式发布,同时 Go 官方发布了 “Go 1 兼容性” 承诺:只要符合 Go 1 语言规范的源代码,Go 编译器将保证向后兼容(backwards compatible),这给开发者带来了安全感。
Go 的特点
- 只有 25 个关键字,主流编程语言最少。
- 内置垃圾收集,这是相比较 C 语言而言,(C# 和 Java 也有垃圾收集)。
- 方法或变量的首字母大小写决定可见性,无需通过额外的访问修饰符,太喜欢这个了。
- 内置接口类型,为程序的组合带来方便。
- 变量初始为类型零值,避免以随机值作为初值的问题。
- 函数或方法中的错误会通过 return 语句显式地返回,调用者不能忽略对返回的错误的处理。
- 内置数组边界检查,减少越界访问带来的安全隐患。
- 内置并发支持,简化并发程序设计,这也是很多人使用 Go 语言的一个原因。
- 为了提升可读性,Go 不支持默认函数参数。
- 每个类型有自己的方法集,类型定义和方法实现是独立的。
相关网站
- https://golang.org : Go 原来的官网,现在访问会跳转到 go.dev 。
- https://go.dev : Go 现在的官网。
- https://pkg.go.dev/ :包管理。
- https://goproxy.cn/ :傲飞开发的 Go 模块代理站,现在由七牛云托管。
- http://goproxy.io/ : 李保坤