Go 语言程序设计

百科

Go 语言程序设计是2013年人民邮电出版社出版社出版M来自ark Summerfield编著图书。

  • 中文名 Go 语言程序设计
  • 装帧 平装
  • 定价 CNY 69.00
  • 作者 Mark Summerfield
  • 出版社 人民邮电出版社

编辑推荐

  ​国外最经典的Go语言著作,Go语言编程的先驱者Mark Summerfield的实践经验总结。

 来自 这是一本Go语言实战指360百科南,帮你了解Go语言,按Go语言的方式思考,以及使用Go语言来编写高性富层提海车升续局酸才能软件。

  作者展示了如何编写充分利用Go语言化重烧获报法突破性的特性和惯用法的代码,委何理植植通先标科期以及Go语言在其他语言之上所要口慢之做的改进,并着重强调了Go语言的关键创新。

  注重实践教学,每章都提供了多个经过精心设计的代码示例。

  由国内首个核心服务完全采用Go语言实现的团队——七牛团队核心成员翻译。

作者简介

  Mark Summerfield  Q树认谈调当密院满伯trac公司创始人,独立的培训讲师、顾问、技术编辑,Go、Python、空四社者决C++、Qt和PyQt方面的技术作家。他的著作包括Rapid GUI Programming with Python and Qt、C++ GUI Programming with Qt 4(与Jasmin Blanchette合著)、Programming in Python 3和Advanced Qt Programming等。

  许式伟——七牛云存储CEO,开源爱好者,发布过十余校迅个C++开源项目,拥有超过15年的C/C++开发经验。

  吕桂华——七牛云存储联合创始人,拥有十余年的C/C++大型东耐温师更好兵的台民项目开发经验,也曾在Java和.NET平台上探索多年。

 统谈讨技换 徐  立——七牛云存储首席布道师,前盛大创新院高级研究员。

  何李石——七牛云存储布道师。

  七牛云存储技击密阿是尼技术团队是国内第一个核心服务完全采用Go语言害绿息实现的团队。

目录

  第1章 5个例子 1

  1.1 开始 1

  1.2 编辑维将、编译和运行 3

  1.3 Hello Who? 6

  1.4 大数字——二维切片 8

  1.5 栈——自定义类型及其方法 12

  1.6 americanise示例——文件、映射和闭包 18

  1.7 从极坐标到笛卡儿坐标——并发 28

  1.8 练习 33

  第2章 布尔与数值类型 35

  2.1 基础 35

  2.2 布尔值和布尔表达式 39

  2.3 数值类型 40

  2.3.1 整型 42

  2.3.2 浮点类型 46

  2.4 例子:statistics 53

  2.4.1 实现一个简单的统计函数 54

 来自 2.4.2 实现一个基本的H却门响TTP服务器 55

  2.5 练习 58

  第3孙使际完二组儿律还章 字符串 60

  3.1 字面量、操作符和转义 61

  3.2 比较字符串 63

  3.3 字符和字符串 65

  3.4 字符串索引与切片 67

  3.5 使用fmt包来格式化字符串 69

  3.5.1 格式化360百科布尔值 73

  3.5.2 格式化整数 74

  3.5.3 格式化字符 75

  3.5.4 格式化浮点数 75

  3.5.5 格式化字符串和切片 76

  3.5.6 为调试格式化 78

  3.6 其他字符处理相关的包 80

  3.6.1 strings包 81

  3.6.2 strconv包 86

  3.6.3 utf8包 90

  3.6.4 unicode包 91

  3.6.5 regexp包 92

  3.7 例子:m3u2pls 101

  3.8 练习 红静卫106

  第4章 集合类型 108

  4.1 值、指针和引用类型 108

  4.2 数组和切片 115

  4.2.1 索引与分割切片 119

  4.2.2 遍历切片 119

  4.2.3 修改切片 121

  4.2.4 排序和搜索切片 125

  4.3 映射 128

  4.3.1 创建和填充映射 129

  4.3.2 映射查询 131

  4.3.3 修改映射 132

  4.3.4 键序遍历映射 132

  4.3.5 映射反转 133

 离斯话季味情顾职 4.4 例子 134

  4.4.哪解听数差板跟开渐1 猜测分隔符 134

  4.4.2 词频统计 136

  4.5 练习 141

  第5章 过程式编程 144

  5.1 语句基础 144

  5设它担命固希非切脱生.1.1 类型转换 排状齐误147

  5.1.2 类型断言 148

  5.2 分支 1危门49

  5.2.1 妈地并语老走察述if语句 150

  5.2.2 switch语句 151

  5.3 for循环语句 1多号采58

  5.4 通信和并发语句 160

  5.5 defer、panic和recover 166

  5.6 自定义函数 171

  5.6.1 函数参数 172

  5.6.2 init()函数和main()函数 175

  5.6.3 闭包 176

  5.6.4 递归函数 178

  5.6.5 运行时选择函数 181

  5.6.6 泛型函数 183

  5.6.7 高阶函女队求办数 187

  5.7 例子:缩进排序 192

  5.8 练习 烟子197

  第6章 面向对象编程 199

  6.1 几个关键概念 199

  6.2 自定义类型 201

  6.2.1 添加方法 203

  6.2.2 验证类型 2灯请从值团太07

  6.3 接口 209

  6.4 结构体 217

  6.5 例子 224

  6.5.1 Fuzzy Bool——一个单值自定义类型 224

  6.5.2 Shapes——一系列自定义类型 229

  6.5.3 有序映射——一个通用的集合类型 240

  6.6 练习 248

  第7章 并发编程 251

  7.1 关键概念 252

  7里将议.2 例子 256

  7.2.1 过滤器 256

  7目型呼变护.2.2 并发的Grep 260

  7.2.3 线程安全的映射 266

  7.2.4 Apache报告 271

  7.2.5 查找副本 278

  7.3 练习 285

  第8章 文件处理 287

  8.1 自定义数据文件 287

  8.1.1 处理JSON文件 290

  8.1.2 处理XML文件 295

  8.1.3 处理纯文本文件 301

  8.1.4 处理Go语言二进制文件 307

  8.1.5 处理自定义的二进制文件 309

  8.2 归档文件 317

  8.2.1 创建zip归档文件 317

  8.2.2 创建可压缩的tar包 319

  8.2.3 解开zip归档文件 321

  8.2.4 解开tar归档文件 322

  8.3 练习 324

  第9章 包 326

  9.1 自定义包 326

  9.1.1 创建自定义的包 327

  9.1.2 导入包 333

  9.2 第三方包 334

  9.3 Go命令行工具简介 335

  9.4 Go标准库简介 336

  9.4.1 归档和压缩包 336

  9.4.2 字节流和字符串相关的包 336

  9.4.3 容器包 337

  9.4.4 文件和操作系统相关的包 339

  9.4.5 图像处理相关的包 341

  9.4.6 数学处理包 341

  9.4.7 其他一些包 341

  9.4.8 网络包 342

  9.4.9 反射包 343

  9.5 练习 346

  附录A 后记 348

  附录B 软件专利的危害 350

  附录C 精选书目 353

文摘

  可以将fuzzybool.New()构造函数看成一个转换函数,因为给定float32、float64、int和bool型的值,它都能够输出一个FuzzyBool值。这两个方法采用别的方式进行类似的转换。

  Fuz zyBool类型提供了一个完整的模糊布尔数据类型,可以像其他所有自定义类型一样使用。因此,*FuzzyBool可以存储在切片中,或者以键或值甚至既是键也是值的形式存储在映射(map)中。当然,如果我们使用*FuzzyBool来做一个映射(map)的键值,我们就可以存储多个模糊布尔值,哪怕它们值是相同的,因为它们每个都含有不同的地址。一种解决方案是采用基于值的模糊布尔值(例如本书源代码中的fuzzy—value例子)。另一种方法是,我们可以定义自定义集合类型,使用指针来存储,但使用它们的值来进行比较。自定义的omap.Map类型也能完成这些功能,只要提供一个合适的小于函数(参见6.5.3节)。

  除了本节给出的模糊布尔类型外,本书的例子中也包含3个备选的模糊布尔实现供比较。这些备选方案没在本书中给出也未详细讨论。第一个可选的实现在文件fuzzy—value/fuzzybool/fuzzybool.go和fuzzy_mutable/fuzzybool/fuzzybool.go中,其功能与本节给出的版本完全一样(在文件fuzzy/fuzzybool/fuzzybool.go中)ofuzzy—value版本是基于值的,而非*FuzzyBool,而fuzzy_mutable版本则直接基于一个float32值而非结构体。fuzzy_mutable的代码稍微比基于结构体的版本冗长而且难懂。第三个可选的版本提供的功能稍微比其他的少,因为它提供的是一个不可变的模糊布尔类型。它也是直接基于float32类型的,该版本的代码在文件fuzzy—immutable/fuzzybool/fuzzybool.go中。这是3个可选实现中最简单的一种。

  6.5.2 Shapes——一系列自定义类型

  当我们希望在一系列相关的类型(例如各种形状)之上应用一些通用的操作时(例如,让一个形状把它们自身画出来),可以采取两种用的比较广泛的实现方法。熟悉C++、Java以及Python的程序员可能会使用层次结构,在Go语言中是嵌套接口。然而,通常更为方便而强大的做法是创建一系列能够相互独立的结构体。在本节中,我们两种方式都会给出,第一种方式在文件shaperl/shapes/shapes.go中,而第二种方式在文件shaper2/shapes/shapes.go中。

标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com