编者注:Go语言编程PDF版

从本书的整体写作风格来看,将主要介绍Go语言的特性,示例会尽量使用作者的惯用做法,而不是一个没有太多实际意义的语法演示示例。我们准备了Go语言编程的PDF版本,需要的请下载

简介

从本书的整体写作风格来看,将主要介绍Go语言的特点,并且示例会尽量使用作者的惯用做法,而不是一个没有太大实际意义的语法演示示例。

这本书的作者有很强的背景。徐世伟,原金山WPS首席架构师,盛大创新研究院研究员。目前是国内Go语言实践界公认的Go语言专家。参与编写本书的几位作者都是实际使用 Go 语言开发的项目的开发人员,具有丰富的实践经验。

本书重点介绍Go语言特性,示例尽量采用作者开发团队的惯用做法,涵盖内存管理(堆和栈)、错误处理、OOP、并发编程等关键主题。本书面向所有打算使用 Go 的开发者,

主要包括目前使用 C、C++、Java、C# 的开发者,甚至一些 Python 和 PHP 开发者可能会转向 Go 程序员。

相关内容部分预览

编辑推荐

《Go语言编程》首先对Go语言的诞生和发展进行了概述,并从过程式编程特点介绍了Go语言的基本用法,让有一定C语言基础的读者可以快速上手并开始使用 Go。解决实际问题的语言,

之后,我介绍了 Go 语言简洁但极其强大的面向对象编程特性和并发编程能力。至此,读者可以理解为什么 Go 语言是为互联网时代而生的语言了。
本书还从实用的角度介绍了Go语言标准库及配套工具的使用方法,包括安全编程、网络编程、项目管理工具等。
适合想要深入了解的读者对于 Go 语言,我们还专门整理了一系列高级主题,包括语言交互性、链接符号、goroutine 机制和接口机制。

简介

在 C 和 Unix 操作系统发布 40 年后,Ken Thompson 和其他贝尔实验室的原创者终于推出了一种全新的编程语言 Go。 Go 语言体现了团队近半个世纪以来对计算机工程的思考,

被称为互联网时代的C语言。自Go语言首次发布以来,七牛云存储团队就密切关注该语言的开发,并率先在七牛的产品中大面积应用,开发效率、系统等客观数据稳定性也继续证明我们选择 Go 语言的合理性。

因此,我们迫不及待地想与同行分享这门语言,让我们一起享受 Go 语言带来的巨大乐趣,共同推动这门语言的发展!
《Go语言编程》首先对Go语言的诞生和发展进行了概述,并从过程式编程特性入手介绍了Go语言的基本用法,让有一定C语言基础的读者可以快速上手开始并开始使用 Go。解决实际问题的语言,

之后,我介绍了 Go 语言简洁但极其强大的面向对象编程特性和并发编程能力。至此,读者可以理解为什么 Go 语言是为互联网时代而生的语言了。本书还从实用的角度介绍了Go语言标准库及配套工具的使用。

包括安全编程、网络编程、项目管理工具等。对于想要更深入了解Go语言的读者,我们还特别整理了一系列进阶话题,包括语言交互性、链接符号、goroutine机制和接口机制。 《Programming in Go》适合各个层次的开发者阅读。

关于作者

七牛云存储CEO徐世伟,曾任盛大创新研究院高级研究员、金山软件技术总监、WPS Office 2005首席架构师。开源爱好者,发布了包括WINX、 TPL等,并拥有超过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 网站资源
br>1.8 小结
第 2 章顺序编程
2.1 变量
2.1.1 变量声明
2.1.2 变量初始化
2.1.3 变量赋值
2.1.4 匿名变量< br >2.2 常量
2.2.1 文字常量
2.2.2 常量定义
2.2.3 P重新定义常量
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 映射
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 错误接口
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 匿名ous 组合
3.4 可见性
3.5 接口
3.5.1 其他语言的接口
3.5.2 非侵入式接口
3.5.3 接口分配
>3.5.4 接口查询
br>3.5.5 类型查询
3.5.6 接口组合
3.5.7 任意类型
3.6 完整示例
3.6.1 音乐库
3.6.2 音乐播放器
3.6. 3 主程序
3.6.4 构建和运行
3.6.5 遗留问题
3.7 总结
第四章并发编程
4.1 并发基础
4.2 协同进程
4.3 goroutine< br>4.4 并发通信
4.5 通道
4.5.1 基本语法
4.5.2 选择
4.5.3 缓冲机制
4.5.4 超时机制
4.5.5 通道传递
br>4.5.6 单向通道
4.5.7 关闭通道
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 加密通信pr进程
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 远程导入支持
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 接口分配