带着问题主动学习优于填鸭式学习。初次面对Go语言,你的疑问是什么呢?
1.我的疑问列表
- Go语言的产生背景是什么?
- Go语言相比其他语言,有什么优秀的特性?
- 我想直观感受一下Go程序
借助于网络资料,逐一寻找这些问题的答案。
2.Go语言的产生背景
Go语言官方自称,之所以开发Go语言,是因为“近10年来开发程序之难让我们有点沮丧”。这一定位暗示了Go语言希望取代C和Java的地位,成为最流行的通用开发语言。
3.Go语言的优秀特性
- 开发速度快
开发人员在为项目选择语言时,不得不在快速开发和性能之间做选择。C/C++这类语言提供了很快的执行速度,而Ruby和Python这类语言擅长快速开发。Go语言不仅提供了高性能的语言,也让开发更快速。Go语言开发速度快,主要体现在编译器速度非常快。
- 并发支持友好
现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易的利用这些资源,这些语言需要写大量的线程同步代码来利用多个核,很容易导致错误。Go语言使用goroutine、通道(channel)对并发编程的支持更加友好方便。这两个概念的具体运用后面细讲。
- 类型系统简单
Go使用组合设计模式,只需要将一个类型嵌入到另一个类型,就能复用所有的功能。其他语言也能使用组合,但是不得不和继承绑在一起使用,结果使整个用法非常复杂。在Go语言中,一个类型由其他更微小的类型组合而成,避免了传统的基于继承的模型。
另外,Go语言具有独特的接口实现机制,允许用户对行为建模,而不是对类型建模,不需要某个类型实现了某个接口,编译器会判断一个类型的实例是否符合正在使用的接口。
- 内存管理交给Go
这一点和Java类似,Go语言把无趣的内存管理交给自带的垃圾回收机制去做。
4.Hello World
直观感受一下最简单的go程序。
//Go程序都组织成包
package main
//import用于导入外部代码
import "fmt"
//同C语言,main函数是程序执行的入口
func main() {
fmt.Println("Hello, World!")
}
在哪里运行呢?无需安装Go语言,在浏览器中就可以使用Go语言的功能,把代码copy到这:http://www.runoob.com/try/runcode.php?filename=helloworld&type=go ,就可以直接运行了。