Go语言从入门到进阶实战(视频教学版)

Go语言从入门到进阶实战(视频教学版)

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
免费试读

作品简介

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

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

作品目录

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

热门划线

  1. break语句可以结束for、switch和select的代码块。break语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的for、switch和select的代码块上。4 人
  2. Go语言的字符有以下两种:·一种是uint8类型,或者叫byte型,代表了ASCII码的一个字符。·另一种是rune类型,代表一个UTF-8字符。当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。3 人
  3. ·ASCII字符串遍历直接使用下标。·Unicode字符串遍历用for range。3 人
  4. Go语言中的map在并发情况下,只读是线程安全的,同时读写线程不安全。3 人
  5. 类型内嵌其实仍然拥有自己的字段名,只是字段名就是其类型本身而已,结构体要求字段名称必须唯一,因此一个结构体中同种类型的匿名字段只能有一个。3 人
  6. 到了Go语言时,内存不再是紧缺资源,而且写法可以更简单。使用Go的“多重赋值”特性,可以轻松完成变量交换的任务2 人
  7. Go语言也有自动匹配特定平台整型长度的类型——int和uint。2 人
  8. Go语言里的字符串的内部实现使用UTF-8编码。通过rune类型,可以方便地对每个UTF-8字符进行访问。当然,Go语言也支持按传统的ASCII码方式进行逐字符访问。2 人
  9. 切片,由指向起始元素的原始指针、元素数量和容量组成2 人
  10. 编译器觉得变量应该分配在堆和栈上的原则是:·变量是否被取地址。·变量是否发生逃逸。2 人

喜欢这本书的人也喜欢