Go语言编程
¥
34.12
7.0折
¥
49
全新
库存7件
作者许式伟,吕桂华 等 著
出版社人民邮电出版社
ISBN9787115290366
出版时间2012-09
装帧平装
开本16开
定价49元
货号1200329645
上书时间2024-12-16
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
许式伟,七牛云存储CEO,曾任盛大创新院资深研究员、金山软件技术总监、WPS
Office
2005首席架构师。开源爱好者,发布过包括WINX、TPL等十余个C++开源项目,拥有超过15年的C/C++开发经验。在接触Go语言后即可被其大道至简、少即是多的设计哲学所倾倒。七牛云存储是国内第一个吃螃蟹的团队,核心服务完全采用Go语言实现。
吕桂华,七牛云存储联合创始人,曾在金山软件、盛大游戏等公司担任架构师和部门经理等职务,在企业级系统和大型网游平台领域有较多涉猎。拥有十余年的C/C++大型项目开发经验,也曾在Java和.NET平台上探索多年。同样被Go语言的魅力所吸引而不可自拔,希望能为推广这门优秀的语言尽自己的绵薄之力。
目录
第1章 初识Go语言
1.1 语言简史
1.2 语言特性
1.2.1 自动垃圾回收
1.2.2 更丰富的内置类型
1.2.3 函数多返回值
1.2.4 错误处理
1.2.5 匿名函数和闭包
1.2.6 类型和接口
1.2.7 并发编程
1.2.8 反射
1.2.9 语言交互性
1.3 第一个Go程序
1.3.1 代码解读
1.3.2 编译环境准备
1.3.3 编译程序
1.4 开发工具选择
1.5 工程管理
1.6 问题追踪和调试
1.6.1 打印日志
1.6.2 GDB调试
1.7 如何寻求帮助
1.7.1 邮件列表
1.7.2 网站资源
1.8 小结
第2章 顺序编程
2.1 变量
2.1.1 变量声明
2.1.2 变量初始化
2.1.3 变量赋值
2.1.4 匿名变量
2.2 常量
2.2.1 字面常量
2.2.2 常量定义
2.2.3 预定义常量
2.2.4 枚举
2.3 类型
2.3.1 布尔类型
2.3.2 整型
2.3.3 浮点型
2.3.4 复数类型
2.3.5 字符串
2.3.6 字符类型
2.3.7 数组
2.3.8 数组切片
2.3.9 map
2.4 流程控制
2.4.1 条件语句
2.4.2 选择语句
2.4.3 循环语句
2.4.4 跳转语句
2.5 函数
2.5.1 函数定义
2.5.2 函数调用
2.5.3 不定参数
2.5.4 多返回值
2.5.5 匿名函数与闭包
2.6 错误处理
2.6.1 error接口
2.6.2 defer
2.6.3 panic()和recover()
2.7 完整示例
2.7.1 程序结构
2.7.2 主程序
2.7.3 算法实现
2.7.4 主程序
2.7.5 构建与执行
2.8 小结
第3章 面向对象编程
3.1 类型系统
3.1.1 为类型添加方法
3.1.2 值语义和引用语义
3.1.3 结构体
3.2 初始化
3.3 匿名组合
3.4 可见性
3.5 接口
3.5.1 其他语言的接口
3.5.2 非侵入式接口
3.5.3 接口赋值
3.5.4 接口查询
3.5.5 类型查询
3.5.6 接口组合
3.5.7 Any类型
3.6 完整示例
3.6.1 音乐库
3.6.2 音乐播放
3.6.3 主程序
3.6.4 构建运行
3.6.5 遗留问题
3.7 小结
第4章 并发编程
4.1 并发基础
4.2 协程
4.3 goroutine
4.4 并发通信
4.5 channel
4.5.1 基本语法
4.5.2 select
4.5.3 缓冲机制
4.5.4 超时机制
4.5.5 channel的传递
4.5.6 单向channel
4.5.7 关闭channel
4.6 多核并行化
4.7 出让时间片
4.8 同步
4.8.1 同步锁
4.8.2 全局唯一性操作
4.9 完整示例
4.9.1 简单IPC框架
4.9.2 中央服务器
4.9.3 主程序
4.9.4 运行程序
4.10 小结
第5章 网络编程
5.1 Socket编程
5.1.1 Dial()函数
5.1.2 ICMP示例程序
5.1.3 TCP示例程序
5.1.4 更丰富的网络通信
5.2 HTTP编程
5.2.1 HTTP客户端
5.2.2 HTTP服务端
5.3 RPC编程
5.3.1 Go语言中的RPC支持与处理
5.3.2 Gob简介
5.3.3 设计优雅的RPC接口
5.4 JSON处理
5.4.1 编码为JSON格式
5.4.2 解码JSON数据
5.4.3 解码未知结构的JSON数据
5.4.4 JSON的流式读写
5.5 网站开发
5.5.1 最简单的网站程序
5.5.2 net/http包简介
5.5.3 开发一个简单的相册网站
5.6 小结
第6章 安全编程
6.1 数据加密
6.2 数字签名
6.3 数字证书
6.4 PKI体系
6.5 Go语言的哈希函数
6.6 加密通信
6.6.1 加密通信流程
6.6.2 支持HTTPS的Web服务器
6.6.3 支持HTTPS的文件服务器
6.6.4 基于SSL/TLS的ECHO程序
6.7 小结
第7章 工程管理
7.1 Go命令行工具
7.2 代码风格
7.2.1 强制性编码规范
7.2.2 非强制性编码风格建议
7.3 远程import支持
7.4 工程组织
7.4.1 GOPATH
7.4.2 目录结构
7.5 文档管理
7.6 工程构建
7.7 跨平台开发
7.7.1 交叉编译
7.7.2 Android支持
7.8 单元测试
7.9 打包分发
7.10 小结
第8章 开发工具
8.1 选择开发工具
8.2 gedit
8.2.1 语法高亮
8.2.2 编译环境
8.3 Vim
8.4 Eclipse
8.5 Notepad++
8.5.1 语法高亮
8.5.2 编译环境
8.6 LiteIDE
8.7 小结
第9章 进阶话题
9.1 反射
9.1.1 基本概念
9.1.2 基本用法
9.1.3 对结构的反射操作
9.2 语言交互性
9.2.1 类型映射
9.2.2 字符串映射
9.2.3 C程序
9.2.4 函数调用
9.2.5 编译Cgo
9.3 链接符号
9.4 goroutine机理
9.4.1 协程
9.4.2 协程的C语言实现
9.4.3 协程库概述
9.4.4 任务
9.4.5 任务调度
9.4.6 上下文切换
9.4.7 通信机制
9.5 接口机理
9.5.1 类型赋值给接口
9.5.2 接口查询
9.5.3 接口赋值
附录A
内容摘要
《Go语言编程》首先引领读者快速浏览Go语言的全貌,迅速消除读者对这门语言的陌生感,然后循序渐进地介绍了Go语言的面向过程和面向对象的编程语法,其中穿插了一些与其他主流语言的比较以让读者理解Go语言的设计动机,接着探讨了Go语言最为重要的并行编程方法;之后介绍了网络编程、工程管理、安全编程、开发工具等非语法相关但非常重要的内容,最后为一系列关于Go语言的文章,可以帮助读者更深入了解这门全新的语言。 《Go语言编程》适合所有层次的开发者阅读。本书由许式伟,吕桂华等编著。
精彩内容
初识Go语言
本章将简要介绍Go语言的发展历史和关键的语言特性,并引领读者对Go语言的主要特性进行一次快速全面的浏览,让读者对Go语言的总体情况有一个清晰的印象,并能够快速上手,用Go语言编写和运行自己的第一个小程序。
1.1 语言简史
提起Go语言的出身,我们就必须将我们饱含敬意的眼光投向持续推出惊世骇俗成果的贝尔实验室。贝尔实验室已经走出了多位诺贝尔奖获得者,一些对于现在科技至关重要的研究成果,比如晶体管、通信技术、数码相机的感光元件CCD和光电池等都源自贝尔实验室。该实验室在科技界的地位可想而之,是一个毫无争议的科研圣地。
这里我们重点介绍一下贝尔实验室中一个叫计算科学研究中心的部门对于操作系统和编程语言的贡献。回溯至1969年(估计大部分读者那时候都还没出世),肯?汤普逊(Ken
Thompson)和丹尼斯?里奇(Dennis
Ritchie)在贝尔实验室的计算科学研究中心里开发出了Unix这个大名鼎鼎的操作系统,还因为开发Unix而衍生出了一门同样赫赫有名的编程语言――C语言。对于很大一部分人而言,Unix就是操作系统的鼻祖,C语言也是计算机课程中最广泛使用的编程语言。Unix和C语言在过去的几十年以来已经造就了无数的成功商业故事,比如曾在90年代如日中天的太阳微系统(Sun
MicroSystems),现在正如日中天的苹果的Mac
OS
X操作系统其实也可以认为是Unix的一个变种(FreeBSD)。
虽然已经取得了如此巨大的成就,贝尔实验室的这几个人并没有因此而沉浸在光环中止步不前,他们从20世纪80年代又开始了一个名为Plan
9的操作系统研究项目,目的就是解决Unix中的一些问题,发展出一个Unix的后续替代系统。在之后的几十年中,该研究项目又演变出了另一个叫Inferno的项目分支,以及一个名为Limbo的编程语言。
Limbo是用于开发运行在小型计算机上的分布式应用的编程语言,它支持模块化编程,编译期和运行时的强类型检查,进程内基于具有类型的通信通道,原子性垃圾收集和简单的抽象数据类型。它被设计为:即便是在没有硬件内存保护的小型设备上,也能安全运行。
Limbo语言被认为是Go语言的前身,不仅仅因为是同一批人设计的语言,而是Go语言确实从Limbo语言中继承了众多优秀的特性。
贝尔实验室后来经历了多次的动荡,包括肯?汤普逊在内的Plan
9项目原班人马加入了Google。在Google,他们创造了Go语言。早在2007年9月,Go语言还是这帮大牛的20%自由时间的实验项目。幸运的是,到了2008年5月,Google发现了Go语言的巨大潜力,从而开始全力支持这个项目,让这批人可以全身心投入Go语言的设计和开发工作中。Go语言的第一个版本在2009年11月正式对外发布,并在此后的两年内快速迭代,发展迅猛。第一个正式版本的Go语言于2012年3月28日正式发布,让Go语言迎来了第一个引人瞩目的里程碑。
基于Google对开源的一贯拥抱态度,
Go语言也自然而然地选择了开源方式发布,并使用BSD授权协议。任何人可以查看Go语言的所有源代码,并可以为Go语言发展而奉献自己的力量。
Google作为Go语言的主推者,并没有简简单单地把语言推给开源社区了事,它不仅组建了一个独立的小组全职开发Go语言,还在自家的服务中逐步增加对Go语言的支持,比如对于Google有战略意义的云计算平台GAE(Google
AppEngine)很早就开始支持Go语言了。按目前的发展态势,在Google内部,Go语言有逐渐取代Java和Python主流地位的趋势。在Google的更多产品中,我们将看到Go语言的踪影,比如Google最核心的搜索和广告业务。
在本书的序中,我们已经清晰诠释了为什么在语言泛滥的时代Google还要设计和推出一门新的编程语言。按照已经发布的Go语言的特性,我们有足够的理由相信Google推出此门新编程语言绝不仅仅是简单的跑马圈地运动,而是为了解决切实的问题。
下面我们再来看看Go语言的主要作者。
肯?汤普逊(Ken
Thompson,http://en.wikipedia.org/wiki/Ken_Thompson):设计了B语言和C语言,创建了Unix和Plan
9操作系统,1983年图灵奖得主,Go语言的共同作者。
罗布?派克(Rob
Pike,http://en.wikipedia.org/wiki/Rob_Pike):Unix小组的成员,参与Plan
9和Inferno操作系统,参与
Limbo和Go语言的研发,《Unix编程环境》作者之一。
罗伯特?格里泽默(Robert
Griesemer):曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8。
拉斯?
考克斯(Russ
Cox,http://swtch.com/~rsc/):参与Plan
9操作系统的开发,Google
Code
Search项目负责人。
伊安?泰勒(Ian
Lance
Taylor):GCC社区的活跃人物,gold连接器和GCC过程间优化LTO的主要设计者,Zembu公司的创始人。
布拉德?菲茨帕特里克(Brad
Fitzpatrick,http://en.wikipedia.org/wiki/Brad_Fitzpatrick):LiveJournal的创始人,著名开源项目memcached的作者。
虽然我们这里只列出了一部分,大家已经可以看出这个语言开发团队空前强大,这让我们在为Go语言的优秀特性而兴奋之外,还非常看好这门语言的发展前景。
1.2 语言特性
Go语言作为一门全新的静态类型开发语言,与当前的开发语言相比具备众多令人兴奋不已的新特性。本书从第2章开始,我们将对Go语言的各个方面进行详细解析,让读者能够尽量轻松地掌握这门简洁、有趣却又超级强大的新语言。
这里先给读者罗列一下Go语言最主要的特性:
自动垃圾回收
更丰富的内置类型
函数多返回值
错误处理
匿名函数和闭包
类型和接口
并发编程
反射
语言交互性
1.2.1 自动垃圾回收
我们可以先看下不支持垃圾回收的语言的资源管理方式,以下为一小段C语言代码:
void
foo()
{
char*
p
=
new
char[128];<
— 没有更多了 —
以下为对购买帮助不大的评价