新書推薦:
《
潜能觉醒
》
售價:HK$
86.9
《
初平:汉末群雄混战(190—195)
》
售價:HK$
53.9
《
建安:官渡大决战(196—200)
》
售價:HK$
53.9
《
权力的图像——近代的中国海图与交流
》
售價:HK$
184.8
《
中亚民族史
》
售價:HK$
184.8
《
人工智能与智能制造:概念与方法 [美]马苏德·索鲁什 [美]理查德·D.布拉茨
》
售價:HK$
140.8
《
中平:东汉王朝大崩溃(184—189)
》
售價:HK$
53.9
《
基于鲲鹏的分布式图分析算法实战
》
售價:HK$
108.9
|
編輯推薦: |
体系完整:通过142个案例,囊括Go语言的主要功能
循序渐进:从基本语法到网络编程,条理清晰,逐步提高
实用参考:包括18个常用标准库,深度讲解Go的实战技巧
原理剖析:深入理解Go语言源码实现,了解程序优化方法
|
內容簡介: |
《Go语言编程入门与实战技巧》从内容上分为三大部分,*部分主要介绍Go语言的基础知识,包括Go语言的安装和开发工具,介绍了Go语言的特性与适合的场景,然后讲解了Go语言的程序结构和数据类型,并针对函数和一些关键字的用法与数据类型的调用原理做了阐述。第二部分介绍了Go语言数据结构和标准库,结合实际应用场景探讨了日常生产环境会遇到的问题与解决办法。第三部分主要介绍Go语言的测试工具和用法,并重点讲解了Go语言的内存管理机制,深入理解Go语言的设计哲学,了解Go语言底层的内存管理和并发机制,为更进一步的学习打下坚实的基础。本书适合对计算机编程尤其是对Go语言编程感兴趣的新手作为入门教程阅读,还适合想在Web开发领域有所发展的程序员学习。
|
關於作者: |
黄靖钧:全栈开发者,长期以来一直使用Go语言开发网络应用,在Go语言编程方面经验丰富。热衷开源,深度参与Docker及其生态建设,积极为Potainer等众多著名项目贡献代码。曾任PaaS与CaaS等类型项目的后端Go开发,现从事基础设施架构与数据中心开发工作,专注高并发、微服务领域的研究。
|
目錄:
|
第1章认识Go语言1
1.1Go语言简介1
1.1.1Go语言简史1
1.1.2Go语言特性2
1.1.3谁适合使用Go语言2
1.2Go语言的开发环境部署3
1.2.1Go语言环境变量3
1.2.2在Linux上安装Go语言环境3
1.2.3在Mac OS上安装Go语言环境5
1.2.4在Windows上安装Go语言环境5
1.3Go语言的基本命令及使用5
1.3.1GOROOT结构6
1.3.2GOPATH结构7
1.3.3Go语言命令行参数8
1.3.4第一个Go语言程序12
1.4Go语言的开发工具14
1.4.1CodeAtom14
1.4.2VIM-Go17
1.4.3Gogland18
1.4.4LiteIDE18
1.4.5Cloud IDE19
1.5本章小结23
第2章程序结构24
2.1Go语言程序元素24
2.1.1标识符24
2.1.2关键字25
2.1.3字面量25
2.1.4分隔符25
2.1.5运算符26
2.1.6注释27
2.2Go语言基本概念28
2.2.1常量28
2.2.2变量32
2.3本章小结37
第3章基础数据类型38
3.1整型39
3.1.1整型的表示39
3.1.2整型的运算39
3.2浮点型41
3.2.1浮点型的表示41
3.2.2浮点型的运算42
3.2.3复数42
3.3字符与字符串44
3.3.1字符串的表示44
3.3.2操作字符串46
3.3.3字符串格式化60
3.4布尔型61
3.4.1布尔型的表示61
3.4.2布尔型的运算62
3.5基本数据类型的扩展63
3.5.1强制类型转换63
3.5.2自定义类型64
3.5.3类型别名64
3.5.4指针65
3.6本章小结69
第4章流程控制70
4.1条件语句70
4.1.1if判断71
4.1.2if-else判断71
4.1.3else-if判断73
4.1.4初始化子语句74
4.2选择语句75
4.2.1switch语句75
4.2.2switch初始化语句78
4.2.3select语句79
4.3循环语句80
4.3.1for的子语句81
4.3.2range子语句82
4.4延迟语句84
4.5标签87
4.5.1break87
4.5.2continue89
4.5.3goto90
4.6本章小结91
第5章函数92
5.1认识函数92
5.1.1函数的声明92
5.1.2函数的参数93
5.1.3函数的返回值94
5.2函数的基础95
5.2.1多返回值96
5.2.2函数作为参数97
5.2.3函数作为类型98
5.2.4可变参数99
5.2.5匿名函数与闭包102
5.2.6递归函数106
5.2.7内置函数108
5.3函数进阶108
5.3.1参数传递机制108
5.3.2defer与跟踪111
5.3.3错误与恢复116
5.4本章小结122
第6章复合数据类型123
6.1数组123
6.1.1声明数组123
6.1.2访问与修改124
6.1.3多维数组126
6.1.4将数组传递给函数127
6.2切片128
6.2.1创建数组切片129
6.2.2切片的使用131
6.2.3多维切片137
6.2.4将切片传递给函数137
6.3映射138
6.3.1映射的实现138
6.3.2映射的创建139
6.3.3映射的使用139
6.3.4将映射传递给函数141
6.4本章小结142
第7章包144
7.1包的基础144
7.1.1包的结构146
7.1.2包的导入147
7.1.3包的使用153
7.1.4Go语言工具箱154
7.2自定义包156
7.2.1包的制作157
7.2.2特定平台的代码157
7.2.3godoc生成文档158
7.2.4包的打包与发布159
7.2.5自定义包的导入164
7.3本章小结165
第8章结构体与方法166
8.1结构体166
8.1.1结构体定义166
8.1.2结构体使用172
8.1.3带标签的结构体175
8.1.4匿名字段和内嵌结构体176
8.2类型系统179
8.2.1用户自定义类型179
8.2.2值语义和引用语义182
8.3方法184
8.3.1方法声明184
8.3.2为类型添加方法187
8.3.3工厂方法创建结构体188
8.3.4基于指针对象的方法190
8.3.5方法值和方法表达式191
8.3.6方法和未导出字段193
8.3.7嵌入类型的方法和继承194
8.4本章小结197
第9章接口与反射198
9.1接口198
9.1.1接口是什么199
9.1.2接口类型与约定204
9.1.3接口实现208
9.1.4嵌套接口210
9.1.5接口赋值211
9.1.6接口查询213
9.1.7接口组合214
9.2反射215
9.2.1方法和类型的反射215
9.2.2通过反射修改设置值216
9.2.3反射结构218
9.2.4Printf和反射220
9.3本章小结222
第10章并发编程223
10.1并发编程基础223
10.1.1并发与并行223
10.1.2指定使用核心数225
10.2协程(goroutine)227
10.2.1协程基础228
10.2.2协程间通信229
10.3通道(channel)231
10.3.1基本语法232
10.3.2select232
10.3.3缓冲机制233
10.3.4超时和计时器234
10.3.5channel的传递235
10.3.6单向channel236
10.3.7关闭channel237
10.4并发进阶237
10.4.1多核并行化237
10.4.2协程同步239
10.4.3协程和恢复242
10.5本章小结243
第11章网络编程244
11.1Socket编程244
11.1.1什么是Socket244
11.1.2Dial函数246
11.1.3ICMP示例247
11.1.4TCP Socket249
11.1.5UDP Socket253
11.2HTTP编程255
11.2.1HTTP客户端255
11.2.2HTTP服务器端260
11.3RPC编程262
11.3.1Go RPC263
11.3.2HTTP RPC263
11.3.3TCP RPC266
11.3.4JSON RPC268
11.3.5RPC接口271
11.4数据库272
11.4.1databasesql接口272
11.4.2使用MySQL数据库277
11.4.3使用SQLite数据库280
11.4.4使用PostgreSQL数据库282
11.4.5NoSQL数据库操作286
11.5Go语言使用Cookie287
11.5.1设置Cookie287
11.5.2读取Cookie288
11.6本章小结288
第12章IO编程289
12.1输入输出289
12.1.1io:基本IO接口289
12.1.2fmt:格式化IO292
12.1.3文本处理298
12.2文件系统298
12.2.1os:系统功能实现298
12.2.2path:兼容路径操作299
12.3数据结构与算法303
12.3.1排序304
12.3.2container310
12.4本章小结314
第13章文件处理315
13.1文件操作315
13.1.1创建文件与查看状态316
13.1.2重命名与移动319
13.1.3打开与关闭319
13.1.4删除与截断321
13.1.5读写文件321
13.1.6权限控制325
13.1.7文件链接328
13.2XML处理330
13.2.1解析XML330
13.2.2生成XML333
13.3JSON处理336
13.3.1解析JSON336
13.3.2生成JSON338
13.4日志记录340
13.4.1Logrus341
13.4.2Seelog342
13.5压缩343
13.5.1打包与解包343
13.5.2压缩与解压345
13.6本章小结347
第14章安全与测试348
14.1安全348
14.1.1安全相关的基础概念348
14.1.2通信安全350
14.2测试354
14.2.1单元测试354
14.2.2基准测试362
14.3 本章小结368
第15章内存管理369
15.1内存分配369
15.1.1内存管理基本概念369
15.1.2逃逸分析373
15.2TCMalloc376
15.2.1整体结构377
15.2.2小内存分配378
15.2.3CentralCache379
15.2.4大内存分配381
15.3Mspan(内存管理器)384
15.4垃圾回收398
15.4.1标记清理算法399
15.4.2标记实现403
15.4.3清理406
15.4.4监控408
15.5本章小结408
|
內容試閱:
|
当你打开这本书时,想必对Go语言是有一定兴趣的,本书希望能够让你真正喜欢上Go语言。本书面向的读者是对Go语言有一定了解但尚未入门的新手。
Go语言是谷歌公司发布的一款开源编程语言,它对多处理器系统应用程序的编程进行了大量优化。作为新时代的代表性新生编程语言,Go语言素有云计算时代的C语言之称。从2009年正式发布至今,Go语言经过频繁的迭代更新走到今天,两次斩获TIOBE编程语言排行榜的年度语言称号(2009年和2016年),已经跻身主流编程语言之列。
时至今日,Go语言编译程序的速度可以媲美C或C程序,而且更加安全,支持并行进程。整个Go语言社区在诸多前辈们的推广与布道下,不断壮大,形成了今天富有活力的生态环境。
Go语言在最近几年的更新中有很多富有里程碑意义的更新,例如实现了自举,Go语言几乎完全使用Go语言重写了,仅保留一些基础的汇编代码。实现自举的好处有很多,一是提高了执行速度,可以避免跨语言调用或虚拟机等情况;二是提高了安全性,缩小了程序攻击面,使得整个项目更加可控;三是能够更轻易地实现跨平台编译,编写跨平台程序变得轻而易举。
除此之外,Go语言的运行时系统和标准库等大量生产工具都得到了极大的提升,每一次版本迭代,Go语言都会通过社区反馈权衡内存管理机制,并对调度器做出一些调整。在即将开始的Go语言学习过程中,相信你也能够深刻感受到Go语言开发团队的深思熟虑。
Go语言还有一堆令人爱不释手的工具,令人惊艳的go tool宛如一把瑞士军刀,只需安装Go语言环境之后就可以直接使用。
重要的是,Go语言社区生态成绩同样斐然,随着社区扩大,Go语言包管理机制也有了很大改进,vendor目录的启用标志着Go语言开发进入了一个更加规范的阶段。
整个社区里,拿得出手的杀手级应用(如Moby、Kubernetes、Gogs、Grafana、Etcd等)喷涌而出。Go语言累计接受了将近4万次的代码提交,近千名开发者参与到Go语言开发中。
本书的内容分为三大部分,第一部分主要介绍了Go语言的基础知识,包括Go语言的一些特性、适合的场景,以及Go语言的程序结构和数据类型,还讲解了函数和一些关键字的用法与数据类型的调用原理;第二部分介绍了Go语言常见的数据结构和常用的标准库,结合实际应用场景探讨了大部分生产环境会遇到的问题与解决办法;第三部分主要介绍了Go语言的测试与内存管理机制,深入理解Go语言的设计哲学,了解Go语言底层的内存管理和并发机制,为更进一步的学习打下坚实的基础。
本书的目标读者是对计算机编程尤其是对Go语言编程感兴趣的新手。由于作者水平和时间有限,书中难免会有一些错误和纰漏,欢迎读者指正。衷心希望通过本书的学习,能够让你对Go语言有一个比较全面的理解。
|
|