Go语言是Google推出的一门新的程序开发工具,它具有C/C++的高效性和Python的优雅性,是开发Server端程序的利器,Google完全支持Go,其后台服务器大部分基于Go开发,它被称为“未来互联网上的C语言”。
作为一门新近推出的静态语言,要被软件开发者所承认、接受,Go必须有优于其他静态语言的一些特点。随着计算机技术和计算机网络的迅猛发展,软件开发者对程序设计语言提出了新的要求,比如: 支持高并发、支持多核心架构,同时开发人员还要求编译速度够快、执行效率更高。作为传统成熟的语言,如C/C++、Java、.NET、Python等,它们可能会具备其中一种特点,但不能兼顾。而Go语言恰恰是在“快速编译、高效执行、易于开发”这三个条件之间做到了最佳平衡的一种程序设计语言。
另外,Go语言支持并发,它使用Goroutine和Channel实现更轻量级的并发,提高了系统实现并行计算的效率,优于系统提供的进程和线程,所以它也是未来云计算的利器。
最后,Go语言很容易上手,只要具有C/C++或Java的基础,它支持UNIX/Linux、Windows、Mac等主流平台,可以通过交叉编译很轻松地实现跨平台。
本书详细介绍了Go语言的发展历程、特性及程序设计思想。全书共有11章,第1章介绍了Go的版本、下载和安装,以及常用命令。还介绍了集成开发工具Sublime Text 2。第2章介绍了Go基本数据类型、运算符和表达式。第3章介绍了顺序结构程序设计方法,介绍了fmt包和标准输入输出,还通过strings包和strconv包介绍了字符串处理方法。第4章介绍了选择结构程序设计方法,主要包括if语句和switch语句。第5章介绍了循环结构程序设计方法,以及三种跳转语句。第6章介绍了构造类型和引用类型,重点介绍了数组切片Slice,并通过bytes包详细说明了大量的Slice处理函数。第7章介绍了函数,包括Go函数的新特性,比如像多返回值、变参、匿名函数、闭包等。第8章介绍了结构体和方法,Go其实是使用结构体来实现面向对象编程的,所以这一章涵盖了大量的Go面向对象程序设计知识。第9章介绍了接口,在Go语言中,接口是用来配合结构体实现面向对象编程的。本章还通过综合实例“二叉树”,完整诠释了Go面向对象编程思想及方法。第10章介绍了并发程序设计,从程序层面就支持并发设计是Go最鲜明的特性,也是它的最大的优势。第11章介绍了网络编程,Go是并发的、面向网络的,所以网络编程是它最基本的功能,也是它展示强大功能的舞台。
本书是作者一直跟踪Go语言发展历程的知识积累和经验总结,Go语言是一个非常年轻的程序设计语言,说它是新生儿也不为过。Google 2009年才发布了Go的1.03测试版,2013年5月才发布了它的第一个正式版1.1版。所以,本教材中的基础知识大部分来自于Go官方文档,另一部分知识来自于Go爱好者之间的交流。当然,作者也付出了艰辛和努力,对这些零散的知识进行归纳总结、系统化,并编写了大量的实例代码。
在阅读本书的时候,读者会深深地体会到本书的特点,那就是细致入微地诠释了Go语言的每一个知识点,并为每一个知识点编写了实例。这样做的原因,一是Go语言非常年轻,几乎没有中文版的教程; 二是读者在阅读的时候,可能找不到为你解惑的老师。所以对于有深厚语言功底的读者,可以选择性地阅读这些例子。
本书可作为高等学校计算机、网络、信息类专业的基础教材,对从事计算机应用和开发的技术人员也具有很高的参考价值,也可以作为广大程序爱好者自学用书。
本书由陕西理工学院网络工程教研室王鹏老师编著。在本书撰写过程中,得到了Mark Summerfield博士和Go Web编程交流群众多好友的热情支持与指导,在此一并表示衷心感谢。
由于作者水平有限,加之时间仓促,书中疏漏和不当之处在所难免,敬请读者批评指正。
编者
2013年8月