vlambda博客
学习文章列表

Go语言入门经典|文末赠书

Go语言入门经典|文末赠书

作者简介

周家安  微软最有价值专家(MVP)、编程爱好者,乐于分享各种编程技巧。擅长Web服务开发、Windows 系统开发、Python语言编程。著有《.NET Core实战——手把手教你掌握380个精彩案例》《C# 6.0学习笔记——从第一行C#代码到第一个项目设计》《Python实战指南——手把手教你掌握300个精彩案例》等原创畅销图书

Go语言入门经典|文末赠书

内容简介

Go(Golang)语言在语法上与C、C++ 语言相似,是一门开源的编程语言,可用于编写简单的、实用的应 用程序。Go语言支持内存管理和垃圾回收(GC)机制,使用Go协程可以轻松实现并发计算。本书通过通 俗易懂的文字,着重讲解Go语言编程的基础知识,同时配有丰富的示例。
本书主要内容包括: 开发环境配置及语法基础,代码包(Package),内置运算符与数据类型,代码流程 控制,函数式、接口与结构体,数组、切片与映射类型,反射技术,管理命令行参数,I/O、数据压缩及文件操 作,加密与解密,网络编程,Go协程。

适用读者: 作为入门教程,本书适合对编程感兴趣并且希望通过自学来掌握Go语言基础知识的读者使用,或者有其他编程语言基础的读者阅读参考。同时,本书也可作为高等院校计算机及相关专业的教材。

Go语言入门经典|文末赠书

编辑推荐

Go语言也称为 Golang,它出自计算机科学领域的三位巨匠Ken Thompson 和 Rob Pike、Robert Griesemer之手,在2009年由 Google 公司正式发布。Go语言是一种静态强类型、编译型、并发型及具有垃圾回收功能的开源编程语言。它的主要目标是“兼具Python等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”。Go语言语法简单,规则严谨,具有并发模型、内存分配及垃圾回收机制。此外,Go语言拥有功能完善、质量可靠的标准库,借助这些标准库,可以快速开发基础程序,极大降低学习与开发成本。Go语言拥有完整的工具链,编译、格式化、错误检查功能和帮助文档及第三方工具包都很完善,可以保证代码正确稳定地运行。正因为Go语言具有如此众多的特性,它被誉为“21世纪的编程语言”,成为一种国际化的新语言。

本书由知名IT开发者周家安编著,图书通俗易懂、理论全面、实例丰富。涵盖了如下入门读者最为关心的基础知识:

  • 开发环境配置;

  • 语法基础;

  • 代码包(Package);

  • 内置运算符与数据类型;

  • 代码流程控制;

  • 函数式编程;

  • 接口与结构体;

  • 数组、切片与映射类型;

  • 常用的字符串与数学函数;

  • 反射技术;

  • 管理命令行参数;

  • I/O与文件操作;

  • 加密与解密;

  • 数据压缩;

  • 网络编程;

  • Go协程。

Go语言入门经典|文末赠书

图书目录

第1章准备工作

1.1安装Go语言编译器

1.2配置环境变量

1.3验证Go语言编译器的工作状态

第2章语法基础

2.1代码结构

2.2main包与main函数

2.3Go语句

2.4代码块

2.5注释

2.6使用Go语言编译器

第3章运算符

3.1操作数

3.2算术运算符

3.2.1四则运算符

3.2.2取余运算符

3.2.3如何实现指数运算

3.2.4自增与自减运算符

3.3比较运算符

3.4逻辑运算符

3.5位运算符

3.5.1按位与

3.5.2按位或

3.5.3取反

3.5.4位移

3.5.5按位异或

3.5.6清除标志位

3.6成员运算符

3.8复合运算符

3.9运算符的优先级

第4章程序包管理

4.1package语句

4.2程序包的目录结构

4.3导入语句

4.4初始化函数

4.5模块

4.5.1go.mod文件的基本结构

4.5.2创建go.mod文件

4.5.3编辑go.mod文件

4.5.4使用本地模块

4.6成员的可访问性

第5章变量与常量

5.1变量的初始化

5.2组合赋值

5.3匿名变量

5.4常量

5.5批量声明

5.6变量的作用域

5.7变量的默认值

第6章基础类型

6.1字符与字符串

6.1.1rune类型

6.1.2string类型

6.2数值类型

6.2.1示例: 获取数值类型占用的内存大小

6.2.2整数常量的表示方式

6.2.3科学记数法

6.2.4复数

6.3日期与时间

6.3.1Month类型

6.3.2Weekday类型

6.3.3Duration类型

6.3.4Time类型

6.3.5Sleep函数

6.3.6Timer类型

6.4指针

6.4.1何时使用指针类型

6.4.2new函数

6.5iota常量

第7章函数

7.1函数的定义

7.2调用函数

7.3return语句

7.4多个返回值

7.5可变个数的参数

7.6匿名函数

7.7将函数作为参数传递

第8章流程控制

8.1顺序执行

8.2if语句

8.3switch语句

8.3.1基于表达式构建的switch语句

8.3.2基于类型构建的switch语句

8.3.3fallthrough语句

8.4for语句

8.4.1仅带条件子句的for语句

8.4.2带三个子句的for语句

8.4.3枚举集合元素语句

8.4.4continue与break语句

8.5代码跳转

8.5.1代码标签与goto语句

8.5.2break、continue语句与代码跳转

第9章接口与结构体

9.1自定义类型

9.2结构体

9.2.1结构体的定义

9.2.2结构体的实例化

9.2.3方法

9.3接口

9.3.1接口的定义

9.3.2接口的实现

9.3.3空接口——interface{}

9.3.4接口与函数

9.4类型嵌套

9.5类型断言

第10章数组与切片

10.1数组

10.1.1数组的初始化

10.1.2访问数组元素

10.1.3*[n]T与[n]*T的区别

10.1.4多维数组

10.2切片

10.2.1创建切片实例

10.2.2添加和删除元素

第11章映射与链表

11.1映射

11.1.1映射对象的初始化

11.1.2访问映射对象的元素

11.1.3检查key的存在性

11.2双向链表

11.2.1与双向链表有关的API

11.2.2创建链表实例

11.2.3添加和删除元素

11.2.4移动元素

11.2.5枚举链表元素

11.3环形链表

11.3.1与环形链表有关的API

11.3.2使用环形链表

11.3.3滚动环形链表

11.3.4链接两个环形链表

第12章反射

12.1关键API

12.2获取类型信息

12.2.1类型分辨

12.2.2枚举结构体类型的方法列表

12.2.3枚举结构体类型的字段列表

12.2.4查找嵌套结构体的字段成员

12.2.5获取函数的参数信息

12.2.6获取通道类型的信息

12.2.7判断类型是否实现了某个接口

12.3Value与对象的值

12.3.1修改对象的值

12.3.2读写结构体实例的字段

12.3.3更新数组/切片的元素

12.3.4调用函数

12.3.5调用方法

12.3.6读写映射类型的元素

12.4动态构建类型

12.4.1New函数

12.4.2创建数组类型

12.4.3创建结构体类型

12.4.4动态创建和调用函数

12.4.5生成通用函数体

12.5结构体的Tag

第13章字符串处理

13.1打印文本

13.2格式化输出

13.2.1格式化整数值

13.2.2格式化浮点数值

13.2.3格式化字符串

13.2.4格式化布尔类型的值

13.2.5%T与%v格式控制符

13.2.6输出包含前缀的整数值

13.2.7设置输出内容的宽度

13.2.8控制浮点数的精度

13.2.9参数索引

13.2.10通过参数来控制文本的宽度和精度

13.3读取输入文本

13.3.1读取键盘输入的内容

13.3.2从文件中读入文本

13.3.3以特定的格式读取文本

13.4实现Stringer接口

13.5连接字符串

13.6替换字符串

13.7拆分字符串

13.8查找子字符串

13.8.1查找前缀与后缀

13.8.2查找子字符串的位置

13.9修剪字符串

13.9.1去除前缀和后缀

13.9.2去除字符串首尾的空格

13.9.3修剪指定的字符

13.10重复字符串

13.11字符串与数值之间的转换

13.12切换大小写

13.13使用Builder构建字符串

第14章常用数学函数

14.1求绝对值

14.2最大值与最小值

14.3三角函数与反三角函数

14.4幂运算

14.5开平方/立方根

14.6大型数值

14.6.1大型整数值之间的运算

14.6.2阶乘运算

14.6.3使用大型浮点数值

14.7随机数

14.7.1生成随机浮点数

14.7.2生成随机整数

14.7.3设置随机数种子

14.7.4生成随机全排列

14.7.5“洗牌”程序

14.7.6生成随机字节序列

第15章排序

15.1基本排序函数

15.2实现递减排序

15.3按字符串的长度排序

15.4Interface接口

第16章输入与输出

16.1简单的内存缓冲区

16.2与输入/输出有关的接口类型

16.2.1实现读写功能

16.2.2嵌套封装

16.3Buffer类型

16.4Copy函数

16.5MultiReader函数和MultiWriter函数

16.6SectionReader

第17章文件与目录

17.1文件操作

17.1.1Create函数与Open函数

17.1.2重命名文件

17.1.3获取文件信息

17.1.4OpenFile函数

17.2创建和删除目录

17.3硬链接与符号链接

17.3.1硬链接

17.3.2符号链接

17.4WriteFile函数与ReadFile函数

17.5临时文件

17.6更改程序的工作目录

第18章加密与解密

18.1Base64的编码与解码

18.1.1内置Base64编码方案

18.1.2基于流的编码与解码

18.1.3自定义字符映射表

18.2DES与AES算法

18.2.1Block接口

18.2.2BlockMode模式

18.2.3基于流的加密与解密

18.3哈希算法

18.3.1hash.Hash接口

18.3.2使用crypto子包中的哈希API

18.3.3HMAC算法

18.4RSA算法

18.4.1生成密钥

18.4.2加密和解密

18.4.3存储密钥

18.5PEM编码

18.5.1编码与解码

18.5.2解码后的保留数据

18.5.3消息头

第19章命令行参数

19.1os.Args变量

19.2命令行参数分析API——flag包

19.2.1命令行参数与变量的绑定

19.2.2Value接口

第20章数据压缩

20.1标准库对压缩算法的支持

20.2Gzip压缩算法

20.2.1Gzip基本用法

20.2.2压缩多个文件

20.2.3解压多个文件

20.3DEFLATE算法

20.4自定义的索引字典

20.5Zip文档

20.5.1从Zip文档中读取文件

20.5.2在内存中读写Zip文档

20.5.3注册压缩算法

20.6Tar文档

第21章协程

21.1启动Go协程

21.2通道

21.2.1实例化通道

21.2.2数据缓冲

21.2.3单向通道

21.2.4通道与select语句

21.3互斥锁

21.4WaitGroup类型

第22章网络编程

22.1枚举本地计算机上的网络接口

22.2Socket通信

22.2.1TCP示例: 文件传输

22.2.2UDP示例: 文本传输

22.3HTTP客户端

22.3.1发送GET与POST请求

22.3.2发送自定义HTTP头

22.4HTTP服务器

22.4.1创建HTTP服务器

22.4.2实现Handler接口

22.4.3ServeMux类型

22.4.4封装函数

22.4.5读取URL参数

22.4.6获取客户端提交的表单数据

22.4.7读取客户端上传的文件

22.5CGI编程

22.5.1准备工作

22.5.2示例: 一个简单的CGI程序

22.5.3使用cgi包

22.5.4在子进程中获取Request对象

附录A常用API与程序包对照表

附录BGo语言代码编辑工具使用说明

Go语言入门经典|文末赠书

专家点评

Go语言入门经典|文末赠书
《Go语言入门经典》内容全面,知识点讲解通俗易懂,示例简单实用,初学者“照葫芦画瓢”也能轻松地实现书中示例。书中还涉及了一些高层次的编程知识与技巧,对于读者进一步学习也有参考价值。

柯博文  硅谷录克软件设计公司(美国)创始人,人工智能专家


Go语言问世已有十余年,尽管其标准库还有待完善,但学习Go语言仍然比学习C++语言轻松一些。所以,Go语言已成为编程者喜爱的新语言。《Go语言入门经典》论述深入浅出,条理清晰,读者可以在很短的时间内了解Go语言有关的各种技术要点;书中所附带的示例也可以作为入门者的练习题目,用于巩固基础知识。

宋廷强  青岛科技大学大数据学院副院长 


不管你是否会使用Go语言开发项目,多了解一门编程语言总是会受益的。不论你出于何种学习理由,《Go语言入门经典》值得推荐——全书篇章安排合理,既不过于精简,也没有太多晦涩深奥的理论叙述。书中示例代码难易适中,让读者在学习过程中充满信心和兴趣。

关东升  IT畅销书作家


在学习编程的过程中,培养动手能力是很重要的。读者不仅要掌握好基础知识,也要进行大量的编程练习,这样才能将所学的基础知识真正转变为编程技能,解决现实中的问题。《Go语言入门经典》就是一本完美地融合理论与编程示例的入门读物,推荐Go语言编程者阅读。

贾云龙  北京乐搏优聘教育有限公司CTO


赠书活动

书名: Go语言入门经典
书号:9787302568490
定价:99.00

高校教师(普通高校/职业院校教师)

点击下方封面申请本书

其他读者(科研/工程人员/大学生)

按下述步骤抽奖获样书