{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

Go程序设计语言(英文版)

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

Go程序设计语言(英文版)

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Editer Recommend

继承K&R精髓的Go语言编程圣经,《C程序设计语言》的作者Kernighan教授与谷歌Go开发团队核心成员Donovan联合编写。

凝聚大师毕生造诣,融合Go开发团队智慧,经典与权*的碰撞,打造Go语言编程圣经。

尽得《C程序设计语言》的精髓,简洁实用,字字珠玑,学习Go语言程序设计的权*指南。

Content Description

Go语言是谷歌推出的一种全新的C语言风格的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性,提高编程效率,适合开发大型软件,有望成为主流的编程语言。本书由《C程序设计语言》的作者Kernighan和谷歌公司Go团队合作编写而成,是关于Go语言编程的著作。

Catalogue

第1章综述 1
1.1Hello,World 1
1.2命令行参数 4
1.3查找重复行 8
1.4GIF动画 13
1.5获取一个URL 15
1.6并发获取多个URL 17
1.7实现一个Web服务器 19
1.8杂项 23
第2章程序结构 27
2.1名字 27
2.2声明 28
2.3变量 30
2.4赋值 36
2.5类型声明 39
2.6包和文件 41
2.7作用域 45
第3章基本数据类型 51
3.1整数 51
3.2浮点数 56
3.3复数 61
3.4布尔量 63
3.5字符串 64
3.6常量 75
第4章复合类型 81
4.1数组 81
4.2切片 84
4.3键值对 93
4.4结构体 99
4.5JSON 107
4.6文本和HTML模板 113
第5章函数 119
5.1函数声明 119
5.2递归 121
5.3多返回值 124
5.4错误 127
5.5作为值的函数 132
5.6匿名函数 135
5.7变参函数 142
5.8延后函数调用 143
5.9崩溃 148
5.10恢复 151
第6章方法 155
6.1方法声明 155
6.2带有指针接收器的方法 158
6.3包含嵌入结构体的复合类型 161
6.4作为值和表达式的方法 164
6.5示例:位向量类型 165
6.6封装 168
第7章接口 171
7.1作为规约的接口 171
7.2接口类型 174
7.3接口约定的达成 175
7.4使用flag.Value进行标志位分析 179
7.5作为值的接口 181
7.6使用sort.Interface进行排序 186
7.7http.Handler接口 191
7.8错误接口 196
7.9示例:表达式评估器 197
7.10类型断言 205
7.11使用类型断言分辨错误 206
7.12使用接口类型断言查询行为 208
7.13按类型的程序分支 210
7.14示例:基于标记符号的XML解码 213
7.15几句建议 216
第8章goroutine和信道 217
8.1goroutine 217
8.2示例:并发时钟服务器 219
8.3示例:并发回声服务器 222
8.4信道 225
8.5并行循环 234
8.6示例:并发Web爬虫 239
8.7使用select实现多工 244
8.8示例:并发目录遍历 247
8.9取消执行 251
8.10示例:聊天服务器 253
第9章使用共享变量实现并发 257
9.1竞险 257
9.2互斥量:sync.Mutex 262
9.3读写互斥量:sync.RWMutex 266
9.4内存同步 267
9.5缓式初始化:sync.Once 268
9.6竞险检测器 271
9.7示例:并发无阻塞式高速缓存 272
9.8goroutine和线程 280
第10章包和go工具 283
10.1概述 283
10.2导入路径 284
10.3包声明 285
10.4导入声明 285
10.5空导入 286
10.6包和命名 289
10.7go工具 290
第11章测试 301
11.1go test工具 302
11.2测试函数 302
11.3覆盖率 318
11.4性能基准函数 321
11.5性能剖析 323
11.6示例函数 326
第12章反射 329
12.1为什么会引入反射概念 329
12.2reflect.Type和reflect.Value 330
12.3递归值输出Display 333
12.4示例:对S-表达式编码 338
12.5使用reflect.Value给变量设置值 341
12.6示例:对S-表达式解码 344
12.7访问结构体域标签 348
12.8列出类型的方法 351
12.9几句忠告 352
第13章低阶程序设计 353
13.1unsafe.Sizeof、Alignof和Offsetof 354
13.2unsafe.Pointer 356
13.3示例:深等价 358
13.4使用cgo调用C代码 361
13.5再来几句忠告 366
1. Tutoria 1
1.1. Hello, World1
1.2.?Command?L?ineArguments?4
1.3.?FindingDup?lic?ateLines?8
1.4.?Animated?GIFs?13
1.5.?FetchingaURL?15
1.6.?FetchingURLs?Con?cur?rently17
1.7.?AWe?bServer?19
1.8.?Loose?End?s232.?
2.?ProgramStr?ucture27
2.1.?Names?27
2.2.?Declarat?ions?28
2.3.?Var?iables?30
2.4.?Assig?nments?36
2.5.?Typ?eDecl?arat?ions?39
2.6.?Packages?andFiles?41
2.7.?Scope?45
3.?Basic?Data?Typ?es51
3.1.?Int?egers?51
3.2.?Float?ing?Point?Numbers?56
3.3.?Complex?Numbers?61
3.4.?Boole?ans63
3.5.?Str?ings64
3.6.?Con?stants75
4.?Com?positeTyp?es81
4.1.?Arrays?81
4.2.?Slices?84
4.3.?Maps?93
4.4.?Str?ucts99
4.5.?JSON107
4.6.?Text?andHTMLTempl?ates113
5.?Func?tions?119
5.1.?FunctionDeclarat?ions?119
5.2.?Rec?ursio 121
5.3..MultipleReturn Values.124
5.4..Errors 127
5.5..FunctionValues.132
5.6..Anonymous Functions.135
5.7..Variadic.Functions.142
5.8..Deferred.FunctionCalls 143
5.9..Panic.148
5.10..Recover 151
6..Methods 155
6.1..Method.Declarations.155
6.2..MethodswithaPointerReceiver 158
6.3..ComposingTypesby.Struct.Embedding 161
6.4..Method.Values.andExpressions.164
6.5..Example:.Bit.Vector.Type 165
6.6..Encapsulation 168
7..Interfaces 171
7.1..Interfaces.as.Contracts 171
7.2..Interface.Types 174
7.3..Interface.Satisfaction 175
7.4..ParsingFlags.withflag.Value 179
7.5..Interface.Values.181
7.6..Sortingwithsort.Interface 186
7.7..The http.Handler Interface.191
7.8..The error Interface.196
7.9..Example:.ExpressionEvaluator 197
7.10..Type Assertions.205
7.11..DiscriminatingErrorswith.TypeAssertions.206
7.12..QueryingBehaviorswith.Interface.TypeAssertions.208
7.13..Type Switches 210
7.14..Example:.Token-Based.XML.Decoding 213
7.15..AFew Words.ofAdvice.216
8..Goroutines.and.Channels.217
8.1..Goroutines 217
8.2..Example:.ConcurrentClockServer.219
8.3..Example:.ConcurrentEcho Server.222
8.4..Channels 225
8.5..Looping.inParallel 234
8.6..Example:.ConcurrentWeb.Crawler 239
8.7..Multiplexingwithselect 244
8.8..Example:.ConcurrentDirectoryTraversal 247
8.9..Cancellation 251
8.10..Example:.ChatSer.ver.253
9..Concurrency.withShared.Vari.ables 257
9.1..Race.Con.dit.ion.s 257
9.2..Mut.ual.Exc.lusion:sync.Mutex 262
9.3..Read/Write.Mut.exes:sync.RWMutex 266
9.4..Memor.ySy.nchro.nizat.ion 267
9.5..Lazy.Initializat.ion:sync.Once 268
9.6..TheRace.Detec.tor.271
9.7..Example:.Con.cur.rentNon-Blo.cking.Cache.272
9.8..Goroutinesand.Threads.280
10..Pack.ages and.the.GoTool 283
10.1..Int.roduc.tion 283
10.2..Imp.ort.Pat.hs 284
10.3..ThePackageDeclarat.ion 285
10.4..Imp.ort.Declarat.ions.285
10.5..Blank.Imp.orts 286
10.6..Packages.andNaming 289
10.7..TheGoTool 290
11..Testing.301
11.1..The go.test To.ol 302
11.2. Test Func.tions.302
11.3..Cov.erage 318
11.4. Benchmark Func.tions.321
11.5..Pro.ling 323
11.6. Example Func.tions.326
12..Re.ecti.on 329
12.1..Why.Re.ec.tion? 329
12.2. reflect.Type and reflect.Value 330
12.3. Display,aRec.ursiveValue.Print.er 333
12.4..Example:.Enco.dingS-E.xpressions.338
12.5..Setting.Var.iables.wit.hreflect.Value 341
12.6..Example:.DecodingS-E.xpressions.344
12.7..AccessingStr.uct.Field.Tags.348
12.8..Displaying.the.Met.hodsofaTyp.e 351
12.9..AWo.rdofCaution.352
13..Low-L.evel.Pro.gramming 353
13.1. unsafe.Sizeof, Alignof,and Offsetof 354
13.2. unsafe.Pointer 356
13.3..Example:.DeepEquivalence.358
13.4..Cal.lingCCodewit.hcgo 361
13.5..Another.WordofCaution.366
Introduction

“Go是一种开放源代码的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效的软件。”(来自Go官网golang.org)Go形成构想是在2007年9月,并于2009年11月发布,其发明人是Robert Griesemer、Rob Pike和Ken Thompson,这几位都任职于Google。该语言及其配套工具集意在使得编译和执行都能够富有表达力和效率,而且使得程序员能够轻松写出可靠、健壮的程序。
Go和C从表面上看起来相似,而且和C一样,它也是一种专业程序员使用的工具,兼有事半功倍之效。但是Go远不止是C的一种升级版本。它从多种其他语言中借用和改造了不少好的思想,还避开了那些导致复杂和脆弱的语言特性。它为并发提供的设施是全新的、高效的,它实现数据抽象和面向对象的途径是极其灵活的。它还提供了自动化的内存管理,或称为垃圾收集。
Go特别适用于构建基础设施类软件(如网络服务器),以及程序员使用的工具和系统等。但它的的确确是一种通用语言,而且在诸多领域(如图像处理、移动应用和机器学习)中都能发现它的身影。它在很多场合下被用于替换无类型的脚本语言,这是由于它平衡了表达力和安全性:Go程序通常比动态语言程序运行速度要快,遭遇意料之外的类型错误而导致的崩溃更是少得多。
Go是个开源项目,所以其编译器、库和工具的源代码是所有人皆可免费取得的。来自全世界的社区都在积极地向这个项目贡献代码。Go的运行环境包括类UNIX系统—Linux、FreeBSD、OpenBSD和Mac OS X,还有Plan 9和Microsoft Windows。只要在这些环境之一中写了一个程序,那么基本上不加修改就可以运行在其他环境中。
本书旨在帮助你立刻开始使用Go,以及良好地掌握这门语言,并充分地利用Go的语言特性和标准库来撰写清晰的、符合习惯用法的、高效的程序。
Go的起源和生物学物种一样,成功的语言会繁衍后代,这些后代语言会从它们的祖先那里汲取各种优点;有时候,语言间的混血会产生异常强大的力量;在一些罕见情况下,某个重大的语言特性也可能凭空出现而并无先例。通过考察语言间的影响,我们可以学得不少知识,比如语言为什么会变成这个样子,以及它适配过哪些环境,等等。
下图展示了更早出现的程序设计语言对Go产生的最重要影响。
Go有时会被称为“类C语言”或“21世纪的C”。从C中,Go继承了表达式语法、控制流语句、基本数据类型、按值调用的形参传递、指针,但比这些更重要的是,继承了C所强调的程序要编译成高效的机器码,并自然地与所处的操作系统提供的抽象机制相配合。
可是,Go的家谱中还有其他祖先。产生主要影响的是来自Niklaus Wirth设计的、以Pascal为发端的一个语言支流。Modula-2启发了包概念。Oberon消除了模块接口文件和模块实现文件的区隔。Oberon-2影响了包、导入和声明语法。Object Oberon则提供了方法声明语法。
另一支Go的世系祖先,也是使得Go相对于当下的程序设计显得卓然不群者,是一族名不见经传的、在贝尔实验室开发的研究用语言。这些语言都受到了Tony Hoare于1978年发表的关于并发性基础的开创性论文所提出的通信顺序进程(Communicating Sequential Process,CSP)的启发。在CSP中,程序就是一组无共享状态进程的并行组合,进程间的通信和同步采用信道完成。不过,Hoare提出的CSP是一种形式语言,仅用以描述并发性的基本概念,并不是一种用来撰写可执行程序的程序设计语言。
Rob Pike等人开始动手做一些实验,尝试把CSP实现为真正的语言。第一种这样的语言称为Squeak(“和鼠类沟通的语言”),它是一种用以处理鼠标和键盘事件的语言。紧接着它的是Newsqueak,它带来的是类C的语句和表达式语法,以及类Pascal的类型记法。它是一种纯粹的函数式语言,带有垃圾收集,同样也以管理键盘、鼠标和窗口事件为目标。信道成了一等值(first-class value),它可以动态创建并采用变量存储。
Plan 9操作系统将这些思想都纳入了一种称为Alef的语言。Alef尝试将Newsqueak改造成一种可用的系统级程序设计语言,但垃圾收集的缺失使得它在处理并发性时太过痛苦了。
Go中的其他结构也会在这里或那里显示出某些并非来自祖先的基因。例如,iota多多少少有点APL的影子,而嵌套函数的词法作用域则来自Scheme(以及由之而来的大部分语言)。在Go语言中,也可以发现全新的变异。Go的创新性的切片为动态数组提供了高效的随机访问的同时,也允许旧式链表的复杂共享机制。还有,defer语句也是Go中新引入的。
Go项目所有的程序设计语言都反映了其发明者的程序设计哲学,这其中往往有相当大的一部分是对于此前的语言已知缺点的应对措施。Go这个项目也是诞生于挫败感之中的,这种挫败感来源于Google的若干遭遇了复杂性爆炸性增长的软件系统。(而这个问题绝非Google所独有的。)“复杂性是以乘积方式增长的。”Rob Pike如是说。为了修复某个问题,一点点地将系统的某个部分变得更加复杂,这不可避免地也给其他部分增加了复杂性。在不断要求增加系统功能和选项以及配置,还要快速发布的压力之下,简单性往往被忽视了—尽管长期来看,简单性才是好软件的不二法门。
要实现简单性,就要求在项目的一开始就将思想浓缩至本质,并在项目的整个生命期多保持一些自律,认识到哪些变化是好的,哪些是坏的或致命的。只要投入足够的努力,好的变化就既可以实现目的,又能够不损害软件设计上的Fred Brooks所谓的“概念完整性”。坏的变化就做不到这一点,而致命的变化则会牺牲“简单性”而去换得其浅薄的兄弟概念—“方便性”。但是,只有通过设计上的简单性,系统才能在增长过程中保持稳定、安全和自洽。
Go项目不仅仅包括语言本身、它的工具和标准库,还有决不能忽视的一点,就是它保持极端简单性的行为文化。在高级语言中,Go出现得较晚,因而有一定后发优势,它的基础部分实现得不错:有垃圾收集、包系统、一等函数、词法作用域、系统调用接口,还有不可变的、默认用UTF-8编码的字符串。但相对来说,它的语言特性不多,而且不太会增加新特性了。比如说,它没有隐式数值类型强制转换,没有构造或析构函数,没有运算符重载,没有形参默认值,没有继承,没有泛型,没有异常,没有宏,没有函数注记,没有线程局部存储。这门语言成熟而稳定,并且保证兼容更早版本:在旧版本的Go语言中写的程序,可以在新版本的编译器和标准库下编译和运行。
Go的类型系统足可以使程序员避免在动态语言中会无意犯下的绝大多数错误,但相对而言,它在带类型的语言中又算是类型系统比较简单的。其实现手法有时候会导致类型框架林立却彼此孤立的“无类型”程序设计风格,并且Go程序员不会在类型方面走到C++或Haskell程序员的那一步—重度地表达类型安全性作为语言具备类型基础的证据。但在实际工作中,Go却能为程序员提供具备相当强类型的系统才能实现的安全性和运行时性能,而不让程序员承担这种系统的复杂性。
Go提倡充分利用当代计算机系统设计,尤其强调局部性的重要。其内建数据类型和大多数库数据结构都经过仔细设计,力求以自然方式工作,而不要求显式的初始化或隐式的构造函数。这么一来,隐藏在代码中的内存分配和内存写入就大大减少了。Go中的聚合类型(结构体和数组)都是以直接方式持有其元素,需要更少的存储以及比使用间接域的语言还少的分配动作和间接指针。由于现代计算机都是并行工作的,正如前面提到的那样,Go有着基于CSP的并行特性。Go还提供了变长栈来运行其轻量级线程,或称为goroutine。这个栈初始化时非常小,所以创建一个goroutine的成本极低,创建100万个也完全可以接受。
Go标准库常常被称作“语言自带电池”,它提供了清晰的构件,以及用于I/O、文本处理、图像、加解密、网络、分布式应用的API,而且对许多标准文件格式和协议都提供了支持。Go的库和工具充分地尊重惯例,减少了配置和解释的需要,从而简化了程序逻辑,提高了多种多样的Go程序之间的相似性,使得它更容易学习和掌握。采用go工具构建的项目,仅使用文件和标识符的名字(在极少情况下使用特殊注释),就可以推断出一个项目使用的所有库、可执行文件、测试、性能基准、示例、平台相关变体,以及文档。Go的源代码中就包含了构建的规格说明。
全书组织我们假定你用过一两种其他语言编过程序,可能是像C、C++或Java那样的编译型语言,也可能是像Python、Ruby或JavaScript那样的解释型语言,所以我们不会像对一个没有任何基础的初学者那样事无巨细地讲述所有事。表面上的语法大体雷同,变量、常量、表达式、控制流和函数也一样。
第1章是Go的基础结构的综述,通过十几个完成日常任务(包括读写文件、格式化文本、创建图像,以及在Internet客户端和服务器之间通信)的程序来介绍这门语言。
第2章讲述Go程序的组成元素—声明、变量、新类型、包和文件,以及作用域。第3章讨论数值、布尔量、字符串、常量,还解释如何处理Unicode。第4章描述组合类型,即使用简单类型构造的类型,形式有数组、键值对、结构体,还有切片这种Go中动态表的实现。第5章的内容是函数,另外还讨论了错误处理、崩溃和恢复,以及defer语句。
可以看出,第1章到第5章是基础性的,其内容是任何命令式语言都有的。Go的语法和风格可能与其他语言有所不同,但大多数程序员都能很快掌握。余下的章节所关注的则是Go语言中与惯常做法有一定区别的内容,包括方法、接口、并发、包、测试和反射。
Go以一种不同寻常的方式来诠释面向对象程序设计。它没有类继承,甚至没有类。较复杂的对象行为是通过较简单的对象组合而非继承完成的。方法可以关联到任何用户自定义的类型,而不一定是结构体。具体类型和抽象类型(即接口)之间的关系是隐式的,所以一个具体类型可能会满足该类型设计者没有意识到其存在的接口。方法在第6章讲述,接口在第7章讲述。
第8章内容是Go的并发性处理途径,它基于CSP思想,采用goroutine和信道实现。第9章则讨论并发性中较传统的基于共享变量的一些方面的话题。
第10章讨论包,也就是组织库的机制。本章也说明如何高效地利用go工具,仅仅这个工具,就提供了编译、测试、性能基准测定、程序格式化、文档,以及完成许多其他任务的功能。
第11章讨论测试,在这里Go采取了显著的轻量级途径,避免了重重抽象的框架,转而使用简单的库和工具。测试库提供了一个基础,在其之上如有必要就可以构建更复杂的抽象了。
第12章讨论反射,即程序在执行期间考察自身表示的能力。反射是一种强大的工具,不过得小心使用它,本章通过演示如何用它来实现某些重要的Go库,解释了如何找到适当的平衡。第13章解释低阶程序设计的细节,运用unsafe包来绕过Go的类型系统,以及什么时候这样做是合适的。
每章都配以一定数量的练习,你可以用来测试对Go的理解,或是探索对书中示例的扩展和变形。
除了最简单的那些以外,所有书中的示例代码都可以从位于gopl.io的公开Git仓库下载。每个示例由其包的导入路径识别,从而能够方便地使用go get命令获取、构建和安装。你需要选取一个目录作为你的Go工作空间,并将GOPATH环境变量指向之。在必要时,go工具会创建该目录。例如:
欲运行这些例子,你至少需要使用1.5版本的Go语言。
如果你的计算机上的go工具太旧或是缺失,请按https://golang.org/doc/install的指令操作。
更多信息来源关于Go的更多信息,最好的来源就是Go的官方网站:https://golang.org,它上面列出了文档供读者访问,包括Go程序设计语言规范、标准包,诸如此类。它上面还列出语言综述,指导如何撰写Go程序,以及如何撰写好的Go程序,还有范围广泛的在线文本和视频资源,这些都是对本书的有价值的补充。位于blog.golang.org的Go博客发表的是关于Go的最好文章,以及该语言当下状态、未来计划、会议报告,还有范围广泛的Go相关话题的深度解读。
Go官网在线访问的一个最有用的方面(这也是纸质书的一个令人遗憾的限制),就是它提供了从描述Go程序的网页上直接运行Go程序的能力。这种功能由位于play.golang.org的Go训练场提供,也有嵌入其他页面的,比如位于golang.org的首页,或是由godoc工具提供的文档页面。
训练场为执行简单的实验,撰写短小的程序来检验自己对语法、语义和库包的理解提供了方便,它在很多方面取代了其他语言中的读取–求值–输出循环(Read-Eval-Print Loop,REPL)。它的永久URL对于共享使用Go写成的小段代码、报告缺陷或提出建议都是很有用的。
在训练场的基础之上,位于tour.golang.org的Go综述就是一系列的小型交互式课程,内容是Go语言的基础思想和结构,是整门语言的有序攻略。
训练场和综述的主要缺点在于它只允许导入标准库,还有很多库特性(比如网络库)都出于可操作性或安全原因加以限制了。而要编译和运行每个程序,都要求Internet连接。所以,欲进行更详尽的实验,需要在本机上运行Go程序。幸运的是,下载过程相当直截了当,从golang.org获取Go的分发程序并开始撰写和运行你自己的Go程序,用不了几分钟。
由于Go是个开源项目,你可以从https://golang.org/pkg上在线读取标准库中的任何类型或函数的代码,每个供下载的分发都同样包含这些代码。请使用这些代码来弄明白某些程序的运行原理、回答关于程序细节的问题,也可以用它们来学一学专家是如何写出一流的Go代码的。
致谢来自Go团队的核心成员Rob Pike和Russ Cox仔细通读了初稿数次,他们对于从词句的斟酌到整体结构和组织的建议都极富价值。在准备本书的日语版时,柴田芳树所做的贡献大大超过了他负担的义务,他的火眼金睛发现了大量英语文本中的不一致性,以及代码中的错误。我们向Brian Goetz、Corey Kosak、Arnold Robbins、Josh Bleecher Snyder以及Peter Weinberger对全书初稿所进行的彻底审查和批评建议深表敬意。
我们感激Sameer Ajmani、Ittai Balaban、David Crawshaw、Billy Donohue、Jonathan Feinberg、Andrew Gerrand、Robert Griesemer、John Linderman、Minux Ma、Bryan Mills、Bala Natarajan、Cosmos Nicolaou、Paul Staniforth、Nigel Tao以及Howard Trickey提供的诸多有用建议。 我们也感谢David Brailsford和Raph Levien的排版建议。
我们的Addison-Wesley编辑Greg Doench最初催生了本书,而且一直不断地给予帮助。Addison-Wesley的制作团队—John Fuller、Dayna Isley、Julie Nahil、Chuti Prasertsith以及Barbara Wood—非常杰出,作者得到了一流的支持。
Alan Donovan想要感谢Google的Sameer Ajmani、Chris Demetriou、Walt Drummond以及Reid Tatge让他有时间来写作这本书,还有Stephen Donovan的建议和及时的鼓励。最重要的是他的妻子Leila Kazemi,她为写作项目提供了毫不犹豫的热情和毫不动摇的支持,即使写作造成了很多家庭生活的分心和缺席。
Brian Kernighan对他的朋友和同事深表谢意,他们对Kernighan花费了很长时间才达成对语言的理解表示了耐心和理解。尤其是他的妻子Meg,她为Kernighan的写作以及太多的其他事务提供了不间断的支持。
纽约2015年10月

Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book