深入理解Go语言(第3版) 9787302684510

配送至
$ $ USD 美元

开本:16开
纸张:胶版纸
包装:平装-胶订
是否套装:否
国际标准书号ISBN:9787302684510
所属分类:图书>计算机/网络>程序设计>Go
探索语言的全能指南,从基础入门到高级特性实战,助您快速成为编程高手,即刻开启您的编码之旅!

编辑推荐

《深入理解语言(第版)》全面介绍了语言开发的核心内容,从基础到高级特性如并发、泛型及应用,并结合实例讲解,是掌握语言编程的理想选择。

前 言
本版包含了许多激动人心的新主题,如编写 服务、使用 协议,以及利用 和 进行 项目的开发,还有泛型内容和许多实用工具的开发。此外,我努力使本版比第 版更加精简,并以更自然的结构安排内容,使其阅读起来更加轻松快捷,特别适合那些忙碌的专业人士。
我也努力在书中融入了适量的理论知识和实践内容——但只有您,亲爱的读者,才能评判我是否成功。请务必尝试每章末尾的练习,并在有任何建议或想法时,及时与我联系。
适用读者
本书是为那些希望将 语言知识提升到更高水平的中级 程序员准备的。对于那些希望学习 语言,同时不想重复学习编程基础的经验丰富的其他编程语言开发者来说,本书也会非常有用。
本书内容本版包含了许多激动人心的新主题,如编写 服务、使用 协议,以及利用 和 进行 项目的开发,还有泛型内容和许多实用工具的开发。此外,我努力使本版比第 版更加精简,并以更自然的结构安排内容,使其阅读起来更加轻松快捷,特别适合那些忙碌的专业人士。
我也努力在书中融入了适量的理论知识和实践内容——但只有您,亲爱的读者,才能评判我是否成功。请务必尝试每章末尾的练习,并在有任何建议或想法时,及时与我联系。
适用读者
本书是为那些希望将 语言知识提升到更高水平的中级 程序员准备的。对于那些希望学习 语言,同时不想重复学习编程基础的经验丰富的其他编程语言开发者来说,本书也会非常有用。
本书内容
第 章首先讨论了 语言的历史、 的重要特性及 的优势。接着介绍了 实用程序和 工具,并解释了如何编译和执行 程序。之后,讨论了打印输出和获取用户输入、处理命令行参数及使用日志文件。最后,开发了一个基本的电话簿应用程序版本,并将在接下来的章节中不断改进它。
第 章讨论了 语言的基础数据类型,包括数值型和非数值型,以及将相似数据类型的数据分组的数组和切片。本章还涉及了 语言的指针、常量及处理日期和时间。最后是关于生成随机数,以及使用随机数据更新电话簿应用程序。
第 章从映射()开始,然后深入结构体和结构体关键字()。此外,还讨论了正则表达式、模式匹配及处理 文件。最后,通过为电话簿应用程序添加数据持久性来改进它。
第 章讲述了反射、接口以及类型方法,这些是附加到数据类型上的功能。本章还包括使用 接口对切片进行排序、空接口的使用、类型断言、类型开关及错误数据类型。此外,讨论了 如何模拟一些面向对象的概念,然后对电话簿应用程序进行了改进。
第 章全面介绍了包、模块以及作为包主要元素的函数。在本章中,创建了一个用于与 数据库交互的 包,为其编写了文档,并解释了有时难以掌握的 关键字的使用。此外还包含了关于使用 和 进行自动化的信息,以及如何为 二进制文件创建 镜像。
第 章是关于系统编程的,包括处理命令行参数、处理 信号、文件输入输出、 和 接口,以及使用 和
包等主题。此外,讨论了处理 、 和 文件,创建了一个方便的命令行工具用于发现 文件系统中的循环,并讨论了在 二进制文件中嵌入文件,以及 函数、 类型和 包的使用。最后,更新了电话簿应用程序以使用 数据,并在
包的帮助下将其转换为一个合适的命令行工具。
第 章讨论了 、 和 。介绍了进程、线程和 之间的区别, 包,以及 调度器的运作方式。此外,探索了 关键字的使用,讨论了 的各种“类型”,以及共享内存、互斥锁、 类型和 类型。最后其余部分讨论了 包、 包、工作池、如何对 设置超时,以及如何检测竞态条件。
第 章讨论了 包, 服务器和 服务的开发,将指标暴露给 ,在 中可视化指标,开发 客户端和创建文件服务器。最后还把电话簿应用程序转换为 服务,并为其创建了一个命令行客户端。
第 章涉及 包、,以及 和 协议,还有 域套接字和 协议。最后开发了许多网络服务器和客户端。
第 章全面介绍了 和 服务的使用。学习如何定义 ,开发强大的并发 服务器,以及作为 服务客户端的命令行工具。最后介绍了 用于创建 文档,并学习了如何上传和下载二进制文件。
第 章讨论了代码测试、代码优化和代码性能分析,交叉编译、基准测试 代码、创建示例函数、使用 ,以及寻找不可达的 代码。
第 章全面介绍了在 中使用 。 是由 开发的 服务的替代品。同时阐述了如何定义 服务的方法和消息,如何将它们转换为 代码,以及如何为该 服务开发服务器和客户端。
第 章是关于泛型,以及如何使用新语法编写泛型函数和定义泛型数据类型。
附录讲述了 垃圾收集器的运作,并阐述了这个 组件如何影响代码性能。
如何利用本书
本书需要一台安装了相对较新版本的 计算机,这包括任何运行 、 或 的机器。大部分展示的代码在不作任何修改的情况下也可以在 机器上运行。
为了最大限度地利用本书,您应该尽快尝试将每一章的知识应用到自己的程序中,并看看哪些有效,哪些无效。正如我之前告诉您的,尝试解决每章末尾的练习题,或者创建您自己的编程问题。
显示全部信息

目 录
第 章 语言快速入门
语言简介
语言的历史
为什么选择 而不是
语言的优缺点
和 实用程序
!
函数简介
包简介
运行 代码
编译 代码
像脚本语言那样使用 语言
导入格式和编码规则
语言的重要特性 第 章 语言快速入门
语言简介
语言的历史
为什么选择 而不是
语言的优缺点
和 实用程序
!
函数简介
包简介
运行 代码
编译 代码
像脚本语言那样使用 语言
导入格式和编码规则
语言的重要特性
定义和使用变量
控制程序流
使用 循环和 进行迭代
获取用户输入
使用 变量区分输入类型
理解 语言的并发模型
开发 语言中的 工具
记录信息

写入自定义日志文件
在日志条目中打印行号
语言中的泛型
开发一个基本的电话簿应用程序
本章练习
本章小结
附加资源
第 章 基本数据类型
数据类型
数值数据类型
非数值数据类型
字符串、字符和
日期和时间
常量
将相似数据分组
数组
切片
指针
生成随机数
生成随机字符串
生成安全的随机数
更新电话簿应用程序
本章练习
本章小结
附加资源
第 章 复合数据类型
映射
存储到一个 映射
迭代映射
结构体
定义新的结构体
使用 关键字
结构体切片
正则表达式和模式匹配
语言中的正则表达式
匹配姓名和姓氏
匹配整数
匹配记录中的字段
改进电话簿应用程序
处理 文件
添加索引
电话簿应用程序的改进版本
本章练习
本章小结
附加资源
第 章 反射和接口
反射
结构体的内部结构
使用反射修改结构体值
反射的 个缺点
类型方法
创建类型方法
使用类型方法
接口
接口
空接口
类型断言和类型开关
映射
数据类型
编写自己的接口
处理两种不同的 文件格式
语言中的面向对象编程
更新电话簿应用程序
设置 文件值
使用 包
本章练习
本章小结
附加资源
第 章 包和函数

函数
匿名函数
返回多个值的函数
可以命名的函数返回值
接收其他函数作为参数的函数
函数可以返回其他函数
可变参数函数
关键字
开发自己的包
函数
执行顺序
使用 存储 包
用于操作数据库的包
了解数据库
存储 包
包的设计
包的实现
测试 包
模块
创建更好的包
生成文档

初始版本的配置文件
最终版本的配置文件

版本控制工具
本章练习
本章小结
附加资源
第 章 告诉 系统该做什么
、 和
进程
处理 信号
文件
和 接口
使用和滥用 和
缓冲和非缓冲文件
读取文本文件
逐行读取文本文件
逐字读取文本文件
逐字符读取文本文件
从 读取
从文件中读取特定数量的数据
写入文件
处理 数据
使用 和
结构体和
以流的形式读取和写入 数据
美观打印 记录
处理 数据
处理 数据

使用命令行标志
读取 配置文件


基于 条命令的实用工具
添加命令行标志
创建命令行别名
创建子命令
在 文件系统中查找循环
中的新特性
嵌入文件


更新电话簿应用程序
使用

存储和加载 数据
实现 命令
实现 命令
实现 命令
实现 命令
本章练习
本章小结
附加资源
第 章 语言中的并发性
进程、线程和协程
调度器
环境变量
并发和并行
协程
创建一个协程
创建多个协程
等待协程完成
和 调用的次数不同
使用协程创建多个文件
通道
向通道写入和从通道读取
从已关闭的通道接收
作为函数参数的通道
竞态条件
关键字
协程超时
中的协程超时
之外的协程超时
重新审视 通道
缓冲通道
通道
工作池
信号通道
共享内存和共享变量
类型
类型

使用协程共享内存
闭包变量和 语句


本章练习
本章小结
附加资源
第 章 构建 服务

类型
类型
类型
创建一个 服务器
更新电话簿应用程序
定义
实现处理程序
将指标公开与

公开指标
读取指标
将指标放入
在 中可视化 指标
开发 客户端
使用 改进客户端
为电话薄服务创建客户端
创建文件服务器
对 连接进行超时设置
使用
在客户端设置超时周期
在服务器端设置超时周期
本章练习
本章小结
附加资源
第 章 和


开发 客户端
利用 开发 客户端
利用 开发 客户端
开发 服务器
利用 开发 服务器
利用 开发 服务器
开发 客户端
开发 服务器
开发并发 服务器
使用 域套接字
域套接字服务器
域套接字客户端
创建 服务器
服务器的实现
使用
使用
开发 客户端
本章练习
本章小结
附加资源
第 章
简介
开发 服务器和客户端
服务器
客户端
创建一个功能性的 服务器

使用
使用子路由器
与数据库协作
测试 包
实现 服务器
测试 服务器
开发 客户端
创建命令行客户端的结构
实现 客户端命令
创建 客户端
处理多个 版本
上传和下载二进制文件
使用 进行 文档编写
为 编写文档
生成文档文件
提供文档文件服务
本章练习
本章小结
附加资源
第 章 代码测试与性能分析
代码优化
基准测试代码
重写 函数
基准测试缓冲写入和读取
实用工具
错误定义的基准测试函数
代码性能分析
命令行应用程序的性能分析
服务器性能分析
性能分析器的 界面
实用程序
从客户端追踪 服务器
访问 服务器的所有路由
测试 代码
编写 测试
函数
函数

超时测试
测试代码覆盖率
发现 语言中的不可达代码
测试基于数据库后端的 服务器
模糊测试
交叉编译
使用
生成示例函数
本章练习
本章小结
附加资源
第 章 与 协同工作
简介
定义接口定义语言文件
创建 服务器
开发 客户端
本章练习
本章小结
附加资源
第 章 语言中的泛型
泛型简介
约束条件
使用泛型定义新数据类型
接口和泛型
反射和泛型
本章练习
本章小结
附加资源
附录
显示全部信息

作者简介

是一位颇有成就的作家,同时也是管理员、程序员、和数学家,他喜欢写技术文章和学习新技术。他的研究兴趣包括编程语言、数据库和操作系统。他拥有佩特拉斯大学的数学学士学位和英国伦敦大学学院的信息技术硕士学位。他曾为 、、 用户期刊、期刊、用户与开发者、 、 等撰写各类技术文章。