go 基础信息:什么是 go 语言? | go 技术论坛-金年会app官方网
go 的诞生
go 语言的出现是为了解决 google 公司内开发软件基础设施时由于多核处理器、系统的网络化、大规模计算机集群和 web 编程模型而带来的编程问题。
go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为 google 公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 go 语言的研发工作。
2009 年 11 月 10 日,google 开发团队将 go 语言项目以 bsd-style 授权(完全开源)正式公布了 linux 和 mac os x 版本。同年 11 月 22 日公布了 windows 版本。
2010 年 5 月起,google 将 go 语言投入到后端基础设施的实际开发中。
基于 bsd 可用协议意味着这是一门完全免费开源的编程语言,任何人都可以使用 go 进行商业软件的代码开发且不需要支付任何费用。
github 地址:
go 应用场景
go 与 c 类似,均属于系统编程语言。
go 因为 google 的原因,在集群 web 服务器 or 类似用途的巨型中央服务器具有良好表现。在高性能分布式系统领域下,go 语言比大多数语言有着更高的开发效率。go 通过协程及 gmp 调度机制提供了海量的并发执行,对于游戏服务端开发有着天然优势。
go 语言一个非常好的目标就是实现所谓的复杂事件处理(),这项技术要求海量并行支持,高度的抽象化和高性能。当我们进入到物联网时代,cep 必然会成为人们关注的焦点。
在 google 内部,谷歌地图、google cloud、 youtube.com、dl.google.com 均使用 go 进行开发,内部有专门的团队在将老应用用 go 进行重写且引导新项目使用 go 进行开发。在 google 之外,bbc worldwide、canonical、heroku、nokia、soundcloud 也都在尝试使用 go。
go 语言特性
go 语言是一门类型安全和内存安全的编程语言。虽然 go 语言中仍有指针的存在,但并不允许进行指针运算。
go 语言的另一个目标是对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机,这一点对于谷歌内部的使用来说就非常重要了。设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。
这个特性显然是 go 语言最强有力的部分,不仅支持了日益重要的多核与多处理器计算机,也弥补了现存编程语言在这方面所存在的不足。
go 语言从本质上(程序和结构方面)来实现并发编程。
因为 go 语言没有类和继承的概念,所以它和 java 或 c 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混合型的语言。
go 编程体验
如果你有其它语言的编程经历(面向对象编程语言,如:java、c#、object-c、python、ruby、php),在你进入到 go 语言的世界之后,你将会像迷恋你的 x 语言一样无法自拔。go 语言使用了与其它语言不同的设计模式,所以当你尝试将你的 x 语言的代码迁移到 go 语言时,你将会非常失望,所以你需要从头开始,用 go 的理念来思考。
如果你在至高点使用 go 的理念来重新审视和分析一个问题,你通常会找到一个适用于 go 语言的优雅的金年会app官方网的解决方案。