作品简介

本书采用“理论+实例”的形式编写,通过大量的实例,结合作者多年的一线开发实战经验,全面介绍了Go语言的语法及使用方法。全书秉承方便学习,易于理解,便于查询的理念,无论是想系统学习Go语言基础知识的初学者,还是想进阶提高的有经验的开发人员,都能通过本书迅速掌握Go语言的各种基础语法和开发技巧。本书作者曾经与慕课网合作录制相关的视频课程,拥有丰富的视频制作经验,所以特意为本书精心录制了详细的配套教学视频,这将极大地提升读者的学习效率,比同类图书取得更好的学习效果。另外,本书还免费提供了书中所有实例源程序,为读者的学习提供便利。

徐波,游戏行业从业十余年,资深全栈游戏开发者,慕课网讲师,开源爱好者(github.com/davyxu),众多Gopher之一。2009年创立“战魂小筑博客”,自2012年开始接触Go语言,开源项目cellnet以及tabtoy导表工具,深受业内好评,并广为流传。

作品目录

  • 配套学习资源
  • 前言
  • 第1章 初识Go语言
  • 1.1 Go语言特性
  • 1.2 使用Go语言的项目
  • 1.3 怎样安装Go语言开发包
  • 1.4 搭建开发环境
  • 第2章 Go语言基本语法与使用
  • 2.1 变量
  • 2.2 数据类型
  • 2.3 转换不同的数据类型
  • 2.4 指针
  • 2.5 变量生命期——变量能够使用的代码范围
  • 2.6 字符串应用
  • 2.7 常量——恒定不变的值
  • 2.8 类型别名(Type Alias)
  • 第3章 容器:存储和组织数据的方式
  • 3.1 数组——固定大小的连续空间
  • 3.2 切片(slice)——动态分配大小的连续空间
  • 3.3 映射(map)——建立事物关联的容器
  • 3.4 列表(list)——可以快速增删的非连续空间的容器
  • 第4章 流程控制
  • 4.1 条件判断(if)
  • 4.2 构建循环(for)
  • 4.3 示例:九九乘法表
  • 4.4 键值循环(for range)——直接获得对象的索引和数据
  • 4.5 分支选择(switch)——拥有多个条件分支的判断
  • 4.6 跳转到指定代码标签(goto)
  • 4.7 跳出指定循环(break)——可以跳出多层循环
  • 4.8 继续下一次循环(continue)
  • 第5章 函数(function)
  • 5.1 声明函数
  • 5.2 函数变量——把函数作为值保存到变量中
  • 5.3 示例:字符串的链式处理——操作与数据分离的设计技巧
  • 5.4 匿名函数——没有函数名字的函数
  • 5.5 函数类型实现接口——把函数作为接口来调用
  • 5.6 闭包(Closure)——引用了外部变量的匿名函数
  • 5.7 可变参数——参数数量不固定的函数形式
  • 5.8 延迟执行语句(defer)
  • 5.9 处理运行时发生的错误
  • 5.10 宕机(panic)——程序终止运行
  • 5.11 宕机恢复(recover)——防止程序崩溃
  • 第6章 结构体(struct)
  • 6.1 定义结构体
  • 6.2 实例化结构体——为结构体分配内存并初始化
  • 6.3 初始化结构体的成员变量
  • 6.4 构造函数——结构体和类型的一系列初始化操作的函数封装
  • 6.5 方法
  • 6.6 类型内嵌和结构体内嵌
  • 6.7 示例:使用匿名结构体分离JSON数据
  • 第7章 接口(interface)
  • 7.1 声明接口
  • 7.2 实现接口的条件
  • 7.3 理解类型与接口的关系
  • 7.4 示例:便于扩展输出方式的日志系统
  • 7.5 示例:使用接口进行数据的排序
  • 7.6 接口的嵌套组合——将多个接口放在一个接口内
  • 7.7 在接口和类型间转换
  • 7.8 空接口类型(interface{})——能保存所有值的类型
  • 7.9 示例:使用空接口实现可以保存任意值的字典
  • 7.10 类型分支——批量判断空接口中变量的类型
  • 7.11 示例:实现有限状态机(FSM)
  • 第8章 包(package)
  • 8.1 工作目录(GOPATH)
  • 8.2 创建包package——编写自己的代码扩展
  • 8.3 导出标识符——让外部访问包的类型和值
  • 8.4 导入包(import)——在代码中使用其他的代码
  • 8.5 示例:工厂模式自动注册——管理多个包的结构体
  • 第9章 并发
  • 9.1 轻量级线程(goroutine)——根据需要随时创建的“线程”
  • 9.2 通道(channel)——在多个goroutine间通信的管道
  • 9.3 示例:Telnet回音服务器——TCP服务器的基本结构
  • 9.4 同步——保证并发环境下数据访问的正确性
  • 第10章 反射
  • 10.1 反射的类型对象(reflect.Type)
  • 10.2 反射的值对象(reflect.Value)
  • 10.3 示例:将结构体的数据保存为JSON格式的文本数据
  • 第11章 编译与工具
  • 11.1 编译(go build)
  • 11.2 编译后运行(go run)
  • 11.3 编译并安装(go install)
  • 11.4 一键获取代码、编译并安装(go get)
  • 11.5 测试(go test)
  • 11.6 性能分析(go pprof)——发现代码性能问题的调用位置
  • 第12章 “避坑”与技巧
  • 12.1 合理地使用并发特性
  • 12.2 反射:性能和灵活性的双刃剑
  • 12.3 接口的nil判断
  • 12.4 map的多键索引——多个数值条件可以同时查询
  • 12.5 优雅地处理TCP粘包
  • 第13章 实战演练——剖析cellnet网络库设计并实现Socket聊天功能
  • 13.1 了解cellet网络库特性、流程及架构
  • 13.2 管理TCP Socket连接
  • 13.3 组织接收和发送数据流程的Socket会话(Session)
  • 13.4 排队处理事件的事件队列(EventQueue)
  • 13.5 消息编码(codec)——让cellnet支持消息的多种编码格式
  • 13.6 消息元信息(MessageMeta)——消息ID、消息名称和消息类型的关联关系
  • 13.7 接收和发送封包(packet)
  • 13.8 使用cellnet网络库实现聊天功能
展开全部