Go(又称 Golang)语言于2007年在Google公司诞生,经过10多年的发展得到了众多开发者的关注和广泛应用,随着云计算时代的到来,Go语言的简洁、高效、并发特性和成熟的开源社区吸引了众多传统语言开发者的加入,而且人数越来越多。
甚至有人认为,Go语言是互联网时代的C语言,不仅会制霸云计算,10年内还将会制霸整个IT领域。
Go语言用途众多,比如,Go语言可以作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;在网络编程方面,Go语言广泛应用于Web 应用、API应用、下载应用等;除此之外,Go语言还适用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发的。总之,Go语言在云计算开发、网络编程、运维开发等领域都有广泛的应用。本书正是为使广大读者能够掌握Go这一强大好用的语言而编写的。
本书结合笔者多年一线开发经验,力图使用通俗易懂、深入浅出的描述和丰富的动手练习示例,介绍Go语言的语法特性和编程实践。书中还提供了多个项目,读者在学习本书之后,不仅可以掌握Go语言的使用,还可以自己动手开发实际应用。
本书结构
本书分为基础和项目两部分,全书共20章,其中基础部分为第1~16章,项目部分为第17~19章,最后一章介绍了Go程序的编译,各章内容简要介绍如下:
第1章介绍Go语言的发展历程、开发环境搭建、代码编辑器的安装和入门代码编写。
第2章介绍关键字、标识符、变量、常量、运算符和代码注释等入门知识。
第3章讲述数据类型,即整型、浮点数、复数、布尔型和字符串,还介绍了浮点数精度丢失的解决方案、ASCII与Unicode编码差异、字符串操作和数据类型转换。
第4章讲述流程控制——判断和循环。判断包含if和switch语句,循环包含for、for-range、break、continue和goto语句。
第5章讲述指针的概念、定义与空指针、指针赋值与取值、切片指针和指针的指针等。
第6章讲述内置容器,包括数组、切片、集合和列表,分别介绍各个容器的定义与应用。
第7章讲述函数的应用,包括函数的定义与调用、设置不固定函数参数、函数变量、匿名函数、闭包和递归函数。
第8章讲述结构体应用,包括结构体定义与实例化、设置结构体标签、匿名结构体与匿名成员、结构体嵌套、自定义构造函数和结构体方法。
第9章讲述接口应用,包括接口定义与使用、鸭子类型、多态与工厂函数、接口组合、空接口和接口的类型断言。
第10章讲述反射机制,包括反射3大定律、反射类型与种类以及不同数据类型的反射操作。
第11章讲述并发编程,包括异步概念、函数创建并发、通道变量、无缓冲通道、带缓冲通道、Select处理多通道、sync同步等待、sync加锁机制和sync.Map的应用。
第12章讲述语法特征,包括panic触发宕机、defer延时执行、recover宕机时恢复执行、值类型、引用类型与深浅拷贝、类型别名与自定义、关键字new和make的区别。
第13章讲述包的应用与管理,包括常用内置包、包命名与导入、包的重命名、无包名调用、初始化函数init()与空导入、包管理工具go mod和第三方包的下载与使用。
第14章讲述系统目录与文件处理,分别介绍内置包os、io/ioutil、bufio、encoding/csv、encoding/json和第三方包excelize实现目录与文件的读写处理。
第15章讲述时间处理,由内置包time生成不同类型的时间格式——时间戳、结构体Time和字符串格式化,并讲述时间类型转换、加减运算、延时、超时和定时等功能。
第16章讲述数据库编程,阐述如何安装不同的数据库,使用第三方包实现SQLite、MySQL、MongoDB和Redis的编程应用。
第17章讲述网页自动化测试开发,搭建自动化测试开发环境和阐述第三方包tebeka/selenium的使用。
第18章讲述网络爬虫开发,介绍网络爬虫知识要点,使用内置包net/http、第三方包goquery、mahonia等实现爬虫开发。
第19章讲述网络编程应用,介绍网络编程知识,使用内置包net/http开发HTTP服务、第三方包httprouter扩展路由功能、html/template生成HTML网页等Web应用开发。
第20章讲述内置指令go build的编译功能,实现单文件、多文件、不同包多文件等编译处理以及编译参数说明。
本书特色
? 循序渐进,从零基础入手:本书从初学者必备的基础知识入手,循序渐进地介绍Go语言的语法特性和基础理论,适合没有接触过Go语言编程的读者使用。
? 实例丰富,由浅入深:本书每个知识点都配以实例进行讲解,各章最后还提供了动手练习小项目。实例选择从易到难,结合了笔者的实际开发经验,动手练习可以帮助读者巩固知识、提升技能,解决实际开发中遇到的各种问题。
? 注重实践,适合不同层次的读者:本书既适合初学者阅读,也适合不同岗位的从业者使用。本书根据笔者多年从业经验编写,书中涉及的用Go语言开发爬虫、开发自动化测试程序、开发网站项目,可以满足各类开发人员的需求。
源代码下载
读者可登录GitHub(https://github.com/xyjw/golang-book)下载本书源代码。
也可以扫描以下二维码下载源代码:
如果下载有问题,请发送邮件到booksaga@126.com,邮件主题为“Go语言编程从入门到 实践”。
读者对象
本书主要适合以下读者阅读:
? 从零开始学习Go语言编程的初学者。
? 各类开发岗位的从业者,如爬虫开发人员、测试人员和后端开发人员等。
? 培训机构和大专院校的学生。
笔者从事编程工作近10年,本书可以说是来自开发实践的经验心得,虽然力臻完美,但限于水平,难免会存在疏漏之处,欢迎广大读者及业界专家不吝指正。
黄永祥
2022年3月2日