初识 Go 语言

今天来会一会这个小地鼠

概述

Go是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言号称集多数编程语言的优势于一身,具有较高的生产效率、先进的依赖管理和类型系统,以及原生的并发计算支持。

Go语言的语法接近C语言,但对于变量的声明有所不同。Go语言支持垃圾回收功能。Go语言的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。

与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了 Slice 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持

优势

  1. 部署简单。Go 是一个编译型语言,Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。

  2. 并发性好。Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的问题。

  3. 代码风格强制统一

  4. Go语言语法趋于脚本化,比较简洁,但Go是编译型语言而非解释型语言。

  5. Go语言使用垃圾自动回收机制(GC),GC是定时自动启动,人工可做稍微的干预。

劣势

  1. 错误处理

在Go语言中处理错误的基本模式是:函数通常返回多个值,其中最后一个值是error类型,用于表示错误类型极其描述;调用者每次调用完一个函数,都需要检查这个error并进行相应的错误处理:if err != nil { /*这种代码写多了不想吐么*/ }。此模式跟C语言那种很原始的错误处理相比如出一辙,并无实质性改进。

  1. 软件包管理

Go 语言的软件包管理绝对不是完美的。默认情况下,它没有办法制定特定版本的依赖库,也无法创建可复写的 builds。相比之下 Python、Node 和 Ruby 都有更好的软件包管理系统。然而通过正确的工具,Go 语言的软件包管理也可以表现得不错。

基本语法学习

找到两个口碑比较好的入门Go语言的教程:

配置

Go在Linux上的配置比较简单,无非就是下载一个二进制文件,然后添加一下环境变量。

Go在mac上推荐使用brew进行安装,使用官网的安装包进行安装因为苹果对一些目录的保护,后面在安装其他库的时候可能会存在问题

具体可以参考官方配置文档

参考