1.初识Golang

带着问题主动学习优于填鸭式学习。初次面对Go语言,你的疑问是什么呢?

1.我的疑问列表

  • Go语言的产生背景是什么?
  • Go语言相比其他语言,有什么优秀的特性?
  • 我想直观感受一下Go程序

借助于网络资料,逐一寻找这些问题的答案。

2.Go语言的产生背景

Go语言官方自称,之所以开发Go语言,是因为“近10年来开发程序之难让我们有点沮丧”。这一定位暗示了Go语言希望取代C和Java的地位,成为最流行的通用开发语言。

3.Go语言的优秀特性

3.1开发速度快

开发人员在为项目选择语言时,不得不在快速开发和性能之间做选择。C/C++这类语言提供了很快的执行速度,而Ruby和Python这类语言擅长快速开发。Go语言不仅提供了高性能的语言,也让开发更快速。Go语言开发速度快,主要体现在编译器速度非常快。

3.2并发支持友好

现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易的利用这些资源,这些语言需要写大量的线程同步代码来利用多个核,很容易导致错误。Go语言使用goroutine、通道(channel)对并发编程的支持更加友好方便。

  • goroutine
    goroutine是可以与其他goroutine并行执行的函数,同时也会与主程序并行执行。在其他编程语言中,你需要用线程来完成同样的事情,而在Go语言中会使用同一个线程来执行多个goroutine。

  • 通道(channel)
    通道是一种数据结构,可以让goroutine之间进行安全的数据通信。通道可以帮助用户避免其他语言里常见的共享内存访问的问题。
    1.初识Golang_第1张图片

如图有3个goroutine,第一个goroutine通过通道把数据传给已经在等待的第二个goroutine,两个goroutine间传输数据是同步的,一旦传输完成,两个goroutine都会知道数据已经完成传输。

3.3 类型系统简单

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 ,就可以直接运行了。

你可能感兴趣的:(Golang)