精通Go语言(第2版)

价格 159.00对比
发货 广东东莞市
销量 暂无
评价 已有 0 条评价
人气 已有 7 人关注
数量
+-
库存100
 
联系方式
加关注0

新书科技

VIP   VIP会员第1年
资料未认证
保证金未缴纳

内容简介

《精通Go语言(第2版)》详细阐述了与Go语言相关的基本解决方案,主括Go语言和操作系统,理解Go语言的内部机制,处理Go语言中的基本数据类型,组合类型的使用,利用数据结构改进Go代码,G和函数,反射和接口,UNIX系程,Go语言中的并发编程—协程、通道和管道,Go语言的并发—话题,代码测试、优化和分析,网络编程基础知识,网络编程—构建自己的服务器和客户端,Go语言中的机器学习等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。

目录

目 录第1部分第1章 Go语言和操作系统 31.1 Go语言的历史 31.2 Go语言的未来 41.3 Go语言的优点 41.3.1 Go语言是否 51.3.2 预处理器 51.3.3 godoc实用程序 61.4 编译Go代码 71.5 执行Go代码 81.6 两条Go语言规则 81.7 下载和使用外部的G 101.8 UNIX stdin、stdout和stderr 121.9 输出结果 121.10 使用标准输出 141.11 获取用户输入 161.11.1 :=和= 161.11.2 从标准输入中读取 171.11.3 与命令行参数协同工作 181.12 错误的输出结果 201.13 写入日志文件中 221.13.1 日志级别 221.13.2 日志工具 231.13.3 日志服务器 231.13.4 将信息发送日志文件的Go程序 241.13.5 log.Fatal()函数 261.13.6 log.Panic()函数 271.13.7 写入自定义日志文件中 291.13.8 在日志项中输出行号 311.14 Go语言中的错误处理机制 321.14.1 错误数据类型 331.14.2 错误处理机制 351.15 使用Docker 371.16 练习和链接 421.17 本章小结 43第2章 理解Go语言的内部机制 452.1 Go编译器 452.2 垃圾收集 472.2.1 三色算法 492.2.2 Go垃圾收集器的更多内容 522.2.3 映射、切片和Go垃圾收集器 532.2.4 不的代码 572.2.5 unsaf 582.2.6 unsaf的另一个示例 592.3 从Go程序中调用C代码 602.3.1 利用同一文件从Go程序中调用C代码 602.3.2 利用单独的文件从Go程序中调用C代码 612.3.3 C代码 612.3.4 Go代码 622.3.5 混合Go和C代码 632.4 从C代码中调用Go函数 642.4.1 G 652.4.2 C代码 662.5 defer关键字 672.6 panic()和recover()函数 712.7 两个方便的UNIX实用程序 742.7.1 strace工具 742.7.2 dtrace工具 752.8 Go环境 762.9 go env命令 782.10 Go汇编器 792.11 节点树 802.12 go build的更多内容 862.13 生成WebAsly代码 882.13.1 WebAsly简介 882.13.2 WebAsly的重要 892.13.3 Go和WebAsly 892.13.4 示例 892.13.5 使用生成后的WebAsly代码 902.14 一般的Go编码建议 922.15 练习和链接 932.16 本章小结 93第3章 处理Go语言中的基本数据类型 953.1 数字数据类型 953.1.1 整数 963.1.2 浮点数 963.1.3 复数 963.1.4 Go 2中的数字字面值 983.2 Go语言中的循环 993.2.1 for循环 993.2.2 while循环 993.2.3 range关键字 1003.2.4 多种Go循环示例 1003.3 Go语言中的数组 1023.3.1 多维数组 1023.3.2 数组的缺点 1053.4 Go语言中的切片 1053.4.1 在切片上执行基本的操作 1063.4.2 自动扩展 1083.4.3 字节切片 1093.4.4 copy()函数 1093.4.5 多维切片 1123.4.6 切片的另一个示例 1123.4.7 利用sort.Slice()函数对切片进行排序 1143.4.8 向切片中附加一个数组 1163.5 Go语言中的映射 1173.5.1 存储nil映射中 1193.5.2 何时应使用映射 1203.6 Go语言中的常量 1203.7 Go语言中的指针 1243.8 时间和日期 1273.8.1 与时间协同工作 1283.8.2 解析时间 1293.8.3 与日期协同工作 1303.8.4 解析日期 1303.8.5 修改日期和时间格式 1323.9 度量Go语言中的命令和函数的执行时间 1333.10 度量Go语言垃圾收集器的操作 1353.11 Web链接和练习 1363.12 本章小结 136第4章 组合类型的使用 1374.1 关于组合类型 1374.2 Go语言中的结构 1374.2.1 指向结构的指针 1404.2.2 Go语言中的new关键字 1424.3 Go语言中的元组 1424.4 Go语言中的正则表达式和模式匹配 1444.4.1 理论知识简介 1444.4.2 简单的示例 1444.4.3 示例 1474.4.4 匹配IPv4地址 1504.5 Go语言中的字符串 1544.5.1 rune 1564.5.2 unicod 1584.5.3 string 1594.6 switch语句 1634.7 计算高精度Pi值 1674.8 生成Go语言中的键-值存储 1704.9 Go语言和JSON格式 1754.9.1 读取JSON数据 1754.9.2 保存JSON数据 1774.9.3 使用Marshal()和Unmarshal()函数 1794.9.4 解析JSON数据 1814.9.5 Go语言和XML 1834.9.6 读取XML文件 1864.9.7 自定义XML格式 1884.10 Go语言和YAML格式 1894.11 附加资源 1904.12 练习和Web链接 1904.13 本章小结 191第2部分第5章 利用数据结构改进Go代码 1955.1 图和节点 1955.2 度量算法的复杂度 1965.3 二叉树 1965.3.1 实现Go语言中的二叉树 1975.3.2 二叉树的优点 1995.4 Go语言中的哈希表 2005.4.1 实现Go语言中的哈希表 2015.4.2 实现查能 2045.4.3 哈希表的优点 2045.5 Go语言中的链表 2055.5.1 实现Go语言中的链表 2065.5.2 链表的优点 2095.6 Go语言中的双向链表 2105.6.1 实现Go语言中的双向链表 2115.6.2 双向链表的优点 2145.7 Go语言中的队列 2145.8 Go语言中的栈 2185.9 containe 2215.9.1 使用container/heap 2215.9.2 使用container/list 2245.9.3 使用container/ring 2265.10 在Go语言中生成数 2275.11 生成的数 2335.12 执行矩阵计算 2345.12.1 矩阵的加法和减法 2355.12.2 矩阵乘法 2375.12.3 矩阵的除法 2415.12.4 计算数组维度 2465.13 求解数独谜题 2475.14 附加资源 2515.15 本章练习 2515.16 本章小结 252第6章 G和函数 2536.1 G 2536.2 Go语言中的函数 2546.2.1 匿名函数 2546.2.2 返回多个值的函数 2556.2.3 命名函数的返回值 2576.2.4 含指针参数的函数 2586.2.5 返回指针的函数 2596.2.6 返回其他函数的函数 2606.2.7 接收其他函数作为参数的函数 2626.2.8 可变参数函数 2636.3 开发自己的G 2646.3.1 编译G 2666.3.2 私有变量和函数 2676.3.3 init()函数 2676.4 Go模块 2696.4.1 创建并使用Go模块 2706.4.2 使用同一Go模块的不同版本 2786.4.3 Go模块在Go语言中的存储位置 2796.4.4 go mod vendor命令 2806.5 创建较好的G 2816.6 syscal 2826.7 go/scanner、go/parser和go/toke 2866.7.1 go/as 2876.7.2 go/scanne 2876.7.3 go/parse 2896.7.4 操作示例 2926.7.5 利用给定的字符串长度查找变量名 2936.8 文本和HTML模板 2986.8.1 生成文本输出 2996.8.2 构建HTML输出结果 3016.9 附加资源 3086.10 练习 3096.11 本章小结 309第7章 反射和接口 3117.1 类型方法 3117.2 Go接口 3137.3 编写自己的接口 3167.3.1 使用Go接口 3167.3.2 使用switch语句和数据类型 3187.4 反射 3207.4.1 简单的反射示例 3217.4.2 反射示例 3237.4.3 反射的缺点 3267.4.4 reflectwalk库 3267.5 Go语言中的面向对象编程 3297.6 Git和GitHub简介 3327.6.1 使用Git 3327.6.2 git status命令 3337.6.3 git pull命令 3337.6.4 git commit命令 3337.6.5 git push命令 3347.6.6 与分支协同工作 3347.6.7 与文件协同工作 3357.6.8 .gitignore文件 3367.6.9 使用git diff命令 3367.6.10 与标签协同工作 3377.6.11 git cherry-pick命令 3387.7 使用Delve进行调试 3397.8 附加资源 3437.9 本章练习 3447.10 本章小结 344第3部分第8章 UNIX系程 3478.1 UNIX进程 3488.2 fla 3488.3 vipe 3538.3.1 简单的viper示例 3538.3.2 从flag到vipe 3548.3.3 读取JSON配置文件 3568.3.4 读取YAML配置文件 3588.4 cobr 3608.4.1 简单的cobra示例 3618.4.2 创建命令行别名 3668.5 io.Reader和io.Writer接口 3698.6 bufi 3698.7 读取文本文件 3708.7.1 逐行读取文本文件 3708.7.2 逐个单词读取文本文件 3728.7.3 逐个字符读取文本文件 3748.7.4 从/dev/random中读取 3768.8 读取特定的数据量 3778.9 二进制格式的优点 3798.10 读取CSV文件 3808.11 写入文件中 3838.12 加载和保存磁盘上的数据 3868.13 再访string 3898.14 byte 3918.15 文件权限 3928.16 处理UNIX信号 3948.16.1 处理两个信号 3948.16.2 处理信号 3978.17 Go语言中的UNIX管道编程 3998.18 syscall.PtraceRegs 4018.19 跟踪系统调用 4038.20 用户ID和组ID 4088.21 Docker API和Go语言 4098.22 附加资源 4128.23 本章练习 4138.24 本章小结 413第9章 Go语言中的并发编程—协程、通道和管道 4159.1 进程、线程和协程 4159.1.1 Go调度器 4169.1.2 并发和并行 4169.2 协程 4179.2.1 创建一个协程 4179.2.2 创建多个协程 4189.3 等待协程结束 4209.4 通道 4249.4.1 写入通道 4249.4.2 从通道中读取数据 4269.4.3 从关闭的通道中读取 4279.4.4 作为函数参数的通道 4289.5 管道 4299.6 竞态条件 4339.7 Go语言和Rust语言并发模型的比较 4359.8 Go语言和Erlang语言并发模型的比较 4359.9 附加资源 4369.10 本章练习 4369.11 本章小结 436第10章 Go语言的并发—话题 43710.1 再访Go调度器 43710.2 select关键字 44010.3 协程超时 44310.3.1 协程超时第1部分 44310.3.2 协程超时第2部分 44510.4 再访Go通道 44710.4.1 信号通道 44810.4.2 缓冲通道 44810.4.3 nil通道 45010.4.4 通道的通道 45210.4.5 协程的执行顺序 45410.4.6 如何使用协程 45710.5 共享内存和共享变量 45810.5.1 sync.Mutex类型 45810.5.2 忘记解锁互斥体 46110.5.3 sync.RWMutex类型 46310.5.4 atomi 46610.5.5 基于协程的共享内存 46810.6 重访Go语句 47010.7 缓存竟态条件 47310.8 contex 47910.8.1 contex的示例 48310.8.2 contex的另一个示例 48810.8.3 worker池 49010.9 附加资源 49410.10 本章练习 49410.11 本章小结 495第11章 代码测试、优化和分析 49711.1 优化 49811.2 优化Go代码 49911.3 分析Go代码 49911.3.1 //pprof标 49911.3.2 简单的分析示例 50011.3.3 方便的外 50811.3.4 Go分析器的Web界面 51011.4 go tool trace实用程序 51411.5 测试Go代码 51811.5.1 针对现有Go代码编写测试 51911.5.2 测试代码的覆盖率 52311.6 利用数据库后端测试服务器 52611.6.1 testing/quic 53311.6.2 测试时间过长或无法结束 53711.7 Go代码基准测试 54011.8 简单的基准测试示例 54011.9 缓冲写入的基准测试 54611.10 查找程序中不可访问的Go代码 55111.11 交叉编译 55211.12 生成示例函数 55411.13 从Go代码到机器代码 55611.14 生成Go代码文档 55911.15 使用Docker镜像 56411.16 附加资源 56611.17 本章练习 56711.18 本章小结 568第12章 网络编程基础知识 56912.1 /、和.RoundTripper 56912.1.1 .Response结构 57012.1.2 .Request结构 57012.1.3 .Transport结构 57112.2 TCP/IP 57212.3 IPv4和IPv6 57312.4 nc(1)命令行实用程序 57312.5 读取网络接口的配置 57412.6 在Go语言中执行DNS查找 57812.6.1 获取域的NS记录 58112.6.2 获取域的MX记录 58212.7 在Go语言中创建Web服务器 58312.7.1 使用atomi 58712.7.2 分析一个服务器 58912.7.3 创建一个站点 59412.8 跟踪机制 60412.9 在Go语言中创建一个Web客户端 61012.10 连接超时 61512.10.1 SetDeadline()函数 61712.10.2 在服务器端设置超时时间 61812.10.3 其他超时方式 62012.11 Wireshark和tshark工具 62112.12 gRPC和Go 62212.12.1 定义接口定义文件 62212.12.2 gRPC客户端 62412.12.3 gRPC服务器 62612.13 附加资源 62812.14 本章练习 62912.15 本章练习 630第13章 网络编程—构建自己的服务器和客户端 63113.1 与S流量协同工作 63113.1.1 生成证书 63113.1.2 S客户端 63213.1.3 简单的S服务器 63413.1.4 开发TLS服务器和客户端 63613.2 标 63913.3 开发一个TCP客户端 64013.4 开发一个TCP服务器 64313.5 开发一个UDP客户端 64813.6 部署UDP服务器 65013.7 并发TCP服务器 65313.8 创建TCP/IP服务器的Docker镜像 66313.9 远程过程调用(RPC) 66513.9.1 RPC客户端 66613.9.2 RPC服务器 66713.10 底层网络编程 66913.11 本章资源 67713.12 本章练习 67713.13 本章小结 678第14章 Go语言中的机器学习 67914.1 计算简单的统计属 67914.2 回归 68314.2.1 线回归 68314.2.2 实现线回归 68414.2.3 绘制数据 68614.3 分类 69014.4 聚类 69414.5 异常检测 69714.6 神经网络 70014.7 离群值分析 70214.8 与TensorFlow协同工作 70514.9 与Apache Kafka协同工作 71014.10 附加资源 71514.11 本章练习 71614.12 本章小结 71614.13 接下来的工作 716

举报收藏 0
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2021111040号