新書推薦:
《
孤独传:一种现代情感的历史
》
售價:HK$
85.8
《
家、金钱和孩子
》
售價:HK$
64.9
《
形而上学与测量
》
售價:HK$
74.8
《
世界航母、舰载机图鉴 【日】坂本明
》
售價:HK$
74.8
《
量价关系——透视股票涨跌脉络
》
售價:HK$
74.8
《
创伤与记忆:身体体验疗法如何重塑创伤记忆 [美]彼得·莱文
》
售價:HK$
64.9
《
复原力
》
售價:HK$
75.9
《
近代中国思维方式的演变(王中江著作系列)
》
售價:HK$
209.0
|
編輯推薦: |
《C程序设计语言》的作者Kernighan教授与谷歌Go开发团队核心成员Donovan联合编写。
凝聚大师毕生造诣,融合Go开发团队智慧,经典与权威的碰撞,打造Go语言编程圣经。
尽得《C程序设计语言》的精髓,简洁实用,字字珠玑,学习Go语言程序设计的权威指南。
|
內容簡介: |
Go语言是谷歌推出的一种全新的C语言风格的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性,提高编程效率,适合开发大型软件,有望成为主流的编程语言。本书由《C程序设计语言》的作者Kernighan和谷歌公司Go团队合作编写而成,是关于Go语言编程的权威著作。
|
目錄:
|
目录
第1章 综述1
1.1 Hello,World1
1.2 命令行参数4
1.3 查找重复行8
1.4 GIF动画13
1.5 获取一个URL15
1.6 并发获取多个URL17
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.5 JSON107
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.7 http.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.1 goroutine217
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.Mutex262
9.3 读写互斥量:sync.RWMutex266
9.4 内存同步267
9.5 缓式初始化:sync.Once268
9.6 竞险检测器271
9.7 示例:并发无阻塞式高速缓存272
9.8 goroutine和线程280
第10章 包和go工具283
10.1 概述283
10.2 导入路径284
10.3 包声明285
10.4 导入声明285
10.5 空导入286
10.6 包和命名289
10.7 go工具290
第11章 测试301
11.1 go test工具302
11.2 测试函数302
11.3 覆盖率318
11.4 性能基准函数321
11.5 性能剖析323
11.6 示例函数326
第12章 反射329
12.1 为什么会引入反射概念329
12.2 reflect.Type和reflect.Value330
12.3 递归值输出Display333
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.1 unsafe.Sizeof、Alignof和Offsetof354
13.2 unsafe.Pointer356
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..ReadWrite.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
|
|