基本信息
源码名称:go语言开发入门级教程.pdf
源码大小:25.53M
文件格式:.pdf
开发语言:Go
更新时间:2020-03-08
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
第 1 章 GOLANG 开山篇........................................................................................................................................................... 1 1.1 GOLANG 的学习方向............................................................................................................................................................. 1 1.2 GOLANG 的应用领域............................................................................................................................................................. 1 1.2.1 区块链的应用开发........................................................................................................................................1 1.2.2 后台的服务应用............................................................................................................................................2 1.2.3 云计算/云服务后台应用...............................................................................................................................2 1.3 学习方法的介绍................................................................................................................................................................... 3 1.4 讲课的方式的说明............................................................................................................................................................... 4 第 2 章 GOLANG 的概述........................................................................................................................................................... 5 2.1 什么是程序........................................................................................................................................................................... 5 2.2 GO 语言的诞生小故事..........................................................................................................................................................5 2.2.1 Go 语言的核心开发团队-三个大牛............................................................................................................. 6 2.2.2 Google 创造 Golang 的原因.......................................................................................................................... 6 2.2.3 Golang 的发展历程........................................................................................................................................6 2.3 GOLANG 的语言的特点......................................................................................................................................................... 7 2.4 GOLANG 的开发工具的介绍.................................................................................................................................................8 2.4.1 工具介绍........................................................................................................................................................8 2.4.2 工具选择:....................................................................................................................................................9 2.4.3 VSCode 的安装和使用................................................................................................................................ 10 2.4.4 小结..............................................................................................................................................................14 2.5 WINDOWS 下搭建 GO 开发环境-安装和配置 SDK........................................................................................................... 15 2.5.1 介绍了 SDK.................................................................................................................................................15 2.5.2 下载 SDK 工具包........................................................................................................................................15 2.5.3 windows 下安装 sdk.....................................................................................................................................16 2.5.4 windows 下配置 Golang 环境变量:......................................................................................................... 17 2.6 LINUX 下搭建 GO 开发环境-安装和配置 SDK.................................................................................................................20 2.6.1 Linux 下安装 SDK:................................................................................................................................... 20 2.6.2 Linux 下配置 Golang 环境变量.................................................................................................................. 21 2.7 MAC 下搭建 GO 开发环境-安装和配置 SDK................................................................................................................... 21 2.7.1 mac 下安装 Go 的 sdk..................................................................................................................................21 2.7.2 Mac 下配置 Golang 环境变量:.................................................................................................................22 2.8 GO 语言快速开发入门........................................................................................................................................................22 2.8.1 需求..............................................................................................................................................................22 2.8.2 开发的步骤..................................................................................................................................................22 2.8.3 linux 下如何开发 Go 程序...........................................................................................................................24 2.8.4 Mac 下如何开发 Go 程序............................................................................................................................25 第 III页 2.8.5 go 语言的快速入门的课堂练习..................................................................................................................26 2.8.6 Golang 执行流程分析..................................................................................................................................27 2.8.7 编译和运行说明..........................................................................................................................................27 2.8.8 Go 程序开发的注意事项.............................................................................................................................28 2.9 GO 语言的转义字符(ESCAPE CHAR)................................................................................................................................... 29 2.10 GOLANG 开发常见问题和解决方法.................................................................................................................................31 2.10.1 文件名或者路径错误................................................................................................................................31 2.10.2 小结和提示................................................................................................................................................31 2.11 注释(COMMENT)................................................................................................................................................................ 32 2.11.1 介绍注释.................................................................................................................................................... 32 2.11.2 在 Golang 中注释有两种形式..................................................................................................................32 2.12 规范的代码风格............................................................................................................................................................... 33 2.12.1 正确的注释和注释风格:........................................................................................................................33 2.12.2 正确的缩进和空白....................................................................................................................................33 2.13 GOLANG 官方编程指南....................................................................................................................................................35 2.14 GOLANG 标准库 API 文档............................................................................................................................................... 36 2.15 DOS 的常用指令(了解)..................................................................................................................................................... 37 2.15.1 dos 的基本介绍.......................................................................................................................................... 37 2.15.2 dos 的基本操作原理.................................................................................................................................. 37 2.15.3 目录操作指令............................................................................................................................................38 2.15.4 文件的操作................................................................................................................................................40 2.15.5 其它指令....................................................................................................................................................41 2.15.6 综合案例....................................................................................................................................................41 2.16 课后练习题的评讲...........................................................................................................................................................41 2.17 本章的知识回顾............................................................................................................................................................... 42 第 3 章 GOLANG 变量............................................................................................................................................................. 44 3.1 为什么需要变量................................................................................................................................................................. 44 3.1.1 一个程序就是一个世界..............................................................................................................................44 3.1.2 变量是程序的基本组成单位......................................................................................................................44 3.2 变量的介绍......................................................................................................................................................................... 45 3.2.1 变量的概念..................................................................................................................................................45 3.2.2 变量的使用步骤..........................................................................................................................................45 3.3 变量快速入门案例............................................................................................................................................................. 45 3.4 变量使用注意事项............................................................................................................................................................. 46 3.5 变量的声明,初始化和赋值.............................................................................................................................................49 3.6 程序中 号的使用.............................................................................................................................................................50 3.7 数据类型的基本介绍.........................................................................................................................................................50 3.8 整数类型............................................................................................................................................................................. 50 第 IV页 3.8.1 基本介绍......................................................................................................................................................50 3.8.2 案例演示......................................................................................................................................................51 3.8.3 整数的各个类型..........................................................................................................................................51 3.8.4 整型的使用细节..........................................................................................................................................52 3.9 小数类型/浮点型................................................................................................................................................................53 3.9.1 基本介绍......................................................................................................................................................53 3.9.2 案例演示......................................................................................................................................................53 3.9.3 小数类型分类..............................................................................................................................................53 3.9.4 浮点型使用细节..........................................................................................................................................55 3.10 字符类型........................................................................................................................................................................... 55 3.10.1 基本介绍....................................................................................................................................................55 3.10.2 案例演示....................................................................................................................................................55 3.10.3 字符类型使用细节....................................................................................................................................56 3.10.4 字符类型本质探讨....................................................................................................................................57 3.11 布尔类型........................................................................................................................................................................... 57 3.11.1 基本介绍.................................................................................................................................................... 57 3.11.2 案例演示.................................................................................................................................................... 57 3.12 STRING 类型........................................................................................................................................................................58 3.12.1 基本介绍....................................................................................................................................................58 3.12.2 案例演示....................................................................................................................................................58 3.12.3 string 使用注意事项和细节.......................................................................................................................58 3.13 基本数据类型的默认值...................................................................................................................................................60 3.13.1 基本介绍....................................................................................................................................................60 3.13.2 基本数据类型的默认值如下....................................................................................................................60 3.14 基本数据类型的相互转换...............................................................................................................................................60 3.14.1 基本介绍....................................................................................................................................................60 3.14.2 基本语法....................................................................................................................................................60 3.14.3 案例演示....................................................................................................................................................61 3.14.4 基本数据类型相互转换的注意事项....................................................................................................... 61 3.14.5 课堂练习....................................................................................................................................................62 3.15 基本数据类型和 STRING 的转换......................................................................................................................................63 3.15.1 基本介绍....................................................................................................................................................63 3.15.2 基本类型转 string 类型.............................................................................................................................63 3.15.3 string 类型转基本数据类型.......................................................................................................................65 3.15.4 string 转基本数据类型的注意事项.......................................................................................................... 66 3.16 指针................................................................................................................................................................................... 66 3.16.1 基本介绍....................................................................................................................................................66 3.16.2 案例演示....................................................................................................................................................67 3.16.3 指针的课堂练习........................................................................................................................................68 第 V页 3.16.4 指针的使用细节........................................................................................................................................68 3.17 值类型和引用类型...........................................................................................................................................................68 3.17.1 值类型和引用类型的说明........................................................................................................................68 3.17.2 值类型和引用类型的使用特点................................................................................................................69 3.18 标识符的命名规范...........................................................................................................................................................69 3.18.1 标识符概念................................................................................................................................................70 3.18.2 标识符的命名规则....................................................................................................................................70 3.18.3 标识符的案例............................................................................................................................................70 3.18.4 标识符命名注意事项................................................................................................................................71 3.19 系统保留关键字............................................................................................................................................................... 73 3.20 系统的预定义标识符.......................................................................................................................................................73 第 4 章 运算符............................................................................................................................................................................ 74 4.1 运算符的基本介绍............................................................................................................................................................. 74 4.2 算术运算符......................................................................................................................................................................... 74 4.2.1 算术运算符的一览表..................................................................................................................................74 4.2.2 案例演示......................................................................................................................................................74 4.2.3 算术运算符使用的注意事项......................................................................................................................76 4.2.4 课堂练习 1...................................................................................................................................................76 4.2.5 课堂练习 2...................................................................................................................................................77 4.3 关系运算符(比较运算符).................................................................................................................................................. 77 4.3.1 基本介绍......................................................................................................................................................77 4.3.2 关系运算符一览图......................................................................................................................................78 4.3.3 案例演示......................................................................................................................................................78 4.3.4 关系运算符的细节说明..............................................................................................................................78 4.4 逻辑运算符......................................................................................................................................................................... 79 4.4.1 基本介绍......................................................................................................................................................79 4.4.2 逻辑运算的说明..........................................................................................................................................79 4.4.3 案例演示......................................................................................................................................................79 4.4.4 注意事项和细节说明..................................................................................................................................80 4.5 赋值运算符......................................................................................................................................................................... 80 4.5.1 基本的介绍..................................................................................................................................................80 4.5.2 赋值运算符的分类......................................................................................................................................81 4.5.3 赋值运算的案例演示..................................................................................................................................81 4.5.4 赋值运算符的特点......................................................................................................................................82 4.5.5 面试题..........................................................................................................................................................82 4.6 位运算符............................................................................................................................................................................. 83 4.7 其它运算符说明................................................................................................................................................................. 83 4.7.1 课堂案例......................................................................................................................................................84 第 VI页 4.8 特别说明............................................................................................................................................................................. 85 4.9 运算符的优先级................................................................................................................................................................. 86 4.9.1 运算符的优先级的一览表..........................................................................................................................86 4.9.2 对上图的说明..............................................................................................................................................86 4.10 键盘输入语句................................................................................................................................................................... 87 4.10.1 介绍............................................................................................................................................................ 87 4.10.2 步骤 :......................................................................................................................................................87 4.10.3 案例演示:................................................................................................................................................88 4.11 进制................................................................................................................................................................................... 89 4.11.1 进制的图示................................................................................................................................................ 89 4.11.2 进制转换的介绍........................................................................................................................................90 4.11.3 其它进制转十进制....................................................................................................................................91 4.11.4 二进制如何转十进制................................................................................................................................91 4.11.5 八进制转换成十进制示例........................................................................................................................92 4.11.6 16 进制转成 10 进制..................................................................................................................................92 4.11.7 其它进制转 10 进制的课堂练习..............................................................................................................92 4.11.8 十进制如何转成其它进制........................................................................................................................92 4.11.9 十进制如何转二进制................................................................................................................................93 4.11.10 十进制转成八进制..................................................................................................................................93 4.11.11 十进制转十六进制.................................................................................................................................. 94 4.11.12 课堂练习.................................................................................................................................................. 94 4.11.13 二进制转换成八进制、十六进制..........................................................................................................94 4.11.14 二进制转换成八进制..............................................................................................................................95 4.11.15 二进制转成十六进制..............................................................................................................................95 4.11.16 八进制、十六进制转成二进制..............................................................................................................95 4.11.17 八进制转换成二进制..............................................................................................................................96 4.11.18 十六进制转成二进制..............................................................................................................................96 4.12 位运算............................................................................................................................................................................... 96 4.12.1 位运算的思考题........................................................................................................................................96 4.12.2 二进制在运算中的说明............................................................................................................................97 4.12.3 原码、反码、补码....................................................................................................................................98 4.12.4 位运算符和移位运算符............................................................................................................................98 第 5 章 程序流程控制..............................................................................................................................................................101 5.1 程序流程控制介绍...........................................................................................................................................................101 5.2 顺序控制........................................................................................................................................................................... 101 5.2.1 顺序控制的一个流程图............................................................................................................................101 5.2.2 顺序控制举例和注意事项........................................................................................................................102 5.3 分支控制........................................................................................................................................................................... 102 第 VII页 5.3.1 分支控制的基本介绍................................................................................................................................102 5.3.2 单分支控制................................................................................................................................................103 5.3.3 双分支控制................................................................................................................................................104 5.3.4 单分支和双分支的案例............................................................................................................................106 5.3.5 多分支控制................................................................................................................................................109 5.3.6 嵌套分支.................................................................................................................................................... 114 5.4 SWITCH 分支控制................................................................................................................................................................116 5.4.1 基本的介绍................................................................................................................................................ 116 5.4.2 基本语法.................................................................................................................................................... 116 5.4.3 switch 的流程图..........................................................................................................................................117 5.4.4 switch 快速入门案例................................................................................................................................. 118 5.4.5 switch 的使用的注意事项和细节............................................................................................................. 118 5.4.6 switch 的课堂练习..................................................................................................................................... 122 5.4.7 switch 和 if 的比较.....................................................................................................................................124 5.5 FOR 循环控制..................................................................................................................................................................... 124 5.5.1 基本介绍....................................................................................................................................................124 5.5.2 一个实际的需求........................................................................................................................................124 5.5.3 for 循环的基本语法................................................................................................................................... 125 5.5.4 for 循环执行流程分析............................................................................................................................... 126 5.5.5 for 循环的使用注意事项和细节讨论.......................................................................................................127 5.5.6 for 循环的课堂练习................................................................................................................................... 129 5.6 WHILE 和 DO..WHILE 的实现.............................................................................................................................................. 130 5.6.1 while 循环的实现.......................................................................................................................................130 5.6.2 do..while 的实现.........................................................................................................................................131 5.7 多重循环控制(重点,难点)............................................................................................................................................ 132 5.7.1 基本介绍....................................................................................................................................................132 5.7.2 应用案例....................................................................................................................................................133 5.8 跳转控制语句-BREAK.......................................................................................................................................................137 5.8.1 看一个具体需求,引出 break..................................................................................................................137 5.8.2 break 的快速入门案例...............................................................................................................................137 5.8.3 基本介绍:................................................................................................................................................138 5.8.4 基本语法:................................................................................................................................................138 5.8.5 以 for 循环使用 break 为例,画出示意图.................................................................................................138 5.8.6 break 的注意事项和使用细节...................................................................................................................139 5.8.7 课堂练习....................................................................................................................................................140 5.9 跳转控制语句-CONTINUE................................................................................................................................................. 141 5.9.1 基本介绍:................................................................................................................................................141 5.9.2 基本语法:................................................................................................................................................141 5.9.3 continue 流程图.......................................................................................................................................... 141 第 VIII页 5.9.4 案例分析 continue 的使用........................................................................................................................142 5.9.5 continu 的课堂练习....................................................................................................................................142 5.10 跳转控制语句-GOTO....................................................................................................................................................... 143 5.10.1 goto 基本介绍...........................................................................................................................................144 5.10.2 goto 基本语法...........................................................................................................................................144 5.10.3 goto 的流程图...........................................................................................................................................144 5.10.4 快速入门案例..........................................................................................................................................144 5.11 跳转控制语句-RETURN................................................................................................................................................... 145 5.11.1 介绍:...................................................................................................................................................... 145 第 6 章 函数、包和错误处理..................................................................................................................................................146 6.1 为什么需要函数............................................................................................................................................................... 146 6.1.1 请大家完成这样一个需求:.......................................................................................................................146 6.1.2 使用传统的方法解决................................................................................................................................146 6.2 函数的基本概念............................................................................................................................................................... 147 6.3 函数的基本语法............................................................................................................................................................... 147 6.4 快速入门案例................................................................................................................................................................... 147 6.5 包的引出........................................................................................................................................................................... 148 6.6 包的原理图....................................................................................................................................................................... 148 6.7 包的基本概念................................................................................................................................................................... 149 6.8 包的三大作用................................................................................................................................................................... 149 6.9 包的相关说明................................................................................................................................................................... 149 6.10 包使用的快速入门.........................................................................................................................................................149 6.11 包使用的注意事项和细节讨论.....................................................................................................................................151 6.12 函数的调用机制............................................................................................................................................................. 153 6.12.1 通俗易懂的方式的理解..........................................................................................................................153 6.12.2 函数-调用过程........................................................................................................................................ 153 6.12.3 return 语句................................................................................................................................................ 154 6.13 函数的递归调用............................................................................................................................................................. 155 6.13.1 基本介绍..................................................................................................................................................155 6.13.2 递归调用快速入门..................................................................................................................................156 6.13.3 递归调用的总结......................................................................................................................................157 6.13.4 递归课堂练习题......................................................................................................................................158 6.14 函数使用的注意事项和细节讨论.................................................................................................................................160 6.15 函数的课堂练习............................................................................................................................................................. 165 6.16 INIT 函数...........................................................................................................................................................................166 6.16.1 基本介绍..................................................................................................................................................166 6.16.2 案例说明:..............................................................................................................................................166 6.16.3 inti 函数的注意事项和细节.................................................................................................................... 167 第 IX页 6.17 匿名函数......................................................................................................................................................................... 168 6.17.1 介绍..........................................................................................................................................................168 6.17.2 匿名函数使用方式 1...............................................................................................................................169 6.17.3 匿名函数使用方式 2...............................................................................................................................169 6.17.4 全局匿名函数..........................................................................................................................................169 6.18 闭包................................................................................................................................................................................. 170 6.18.1 介绍..........................................................................................................................................................170 6.18.2 案例演示:..............................................................................................................................................170 6.18.3 闭包的最佳实践......................................................................................................................................171 6.19 函数的 DEFER..................................................................................................................................................................173 6.19.1 为什么需要 defer.....................................................................................................................................173 6.19.2 快速入门案例..........................................................................................................................................173 6.19.3 defer 的注意事项和细节......................................................................................................................... 173 6.19.4 defer 的最佳实践......................................................................................................................................174 6.20 函数参数传递方式.........................................................................................................................................................175 6.20.1 基本介绍..................................................................................................................................................175 6.20.2 两种传递方式..........................................................................................................................................175 6.20.3 值类型和引用类型..................................................................................................................................175 6.20.4 值传递和引用传递使用特点..................................................................................................................175 6.21 变量作用域..................................................................................................................................................................... 176 6.21.1 变量作用域的课堂练习..........................................................................................................................178 6.22 函数课堂练习(综合)...................................................................................................................................................... 179 6.23 字符串常用的系统函数.................................................................................................................................................180 6.24 时间和日期相关函数.....................................................................................................................................................184 6.24.1 基本的介绍..............................................................................................................................................184 6.24.2 时间和日期的课堂练习..........................................................................................................................188 6.25 内置函数......................................................................................................................................................................... 188 6.25.1 说明:......................................................................................................................................................188 6.26 错误处理......................................................................................................................................................................... 189 6.26.1 看一段代码,因此错误处理..................................................................................................................189 6.26.2 基本说明..................................................................................................................................................190 6.26.3 使用 defer recover 来处理错误............................................................................................................. 190 6.26.4 错误处理的好处......................................................................................................................................191 6.26.5 自定义错误..............................................................................................................................................191 6.26.6 自定义错误的介绍..................................................................................................................................191 6.26.7 案例说明..................................................................................................................................................191 第 7 章 数组与切片..................................................................................................................................................................193 7.1 为什么需要数组............................................................................................................................................................... 193 第 X页 7.2 数组介绍........................................................................................................................................................................... 193 7.3 数组的快速入门............................................................................................................................................................... 194 7.4 数组定义和内存布局.......................................................................................................................................................194 7.5 数组的使用....................................................................................................................................................................... 195 7.6 数组的遍历....................................................................................................................................................................... 196 7.6.1 方式 1-常规遍历:...................................................................................................................................... 196 7.6.2 方式 2-for-range 结构遍历........................................................................................................................196 7.7 数组使用的注意事项和细节...........................................................................................................................................197 7.8 数组的应用案例............................................................................................................................................................... 200 7.9 为什么需要切片............................................................................................................................................................... 202 7.10 切片的基本介绍............................................................................................................................................................. 202 7.11 快速入门......................................................................................................................................................................... 203 7.12 切片在内存中形式(重要).............................................................................................................................................. 203 7.13 切片的使用..................................................................................................................................................................... 204 7.14 切片的遍历..................................................................................................................................................................... 206 7.15 切片的使用的注意事项和细节讨论.............................................................................................................................206 7.16 STRING 和 SLICE................................................................................................................................................................209 7.17 切片的课堂练习题......................................................................................................................................................... 211 第 8 章 排序和查找..................................................................................................................................................................213 8.1 排序的基本介绍............................................................................................................................................................... 213 8.2 冒泡排序的思路分析.......................................................................................................................................................213 8.3 冒泡排序实现................................................................................................................................................................... 214 8.4 课后练习........................................................................................................................................................................... 215 8.5 查找................................................................................................................................................................................... 215 8.6 二维数组的介绍............................................................................................................................................................... 220 8.7 二维数组的应用场景.......................................................................................................................................................220 8.8 二维数组快速入门...........................................................................................................................................................220 8.9 使用方式 1: 先声明/定义,再赋值...................................................................................................................................221 8.10 使用方式 2: 直接初始化...............................................................................................................................................222 8.11 二维数组的遍历............................................................................................................................................................. 223 8.12 二维数组的应用案例.....................................................................................................................................................223 第 9 章 MAP............................................................................................................................................................................. 225 9.1 MAP 的基本介绍................................................................................................................................................................ 225 9.2 MAP 的声明........................................................................................................................................................................ 225 9.2.1 基本语法....................................................................................................................................................225 9.2.2 map 声明的举例.........................................................................................................................................225 9.3 MAP 的使用........................................................................................................................................................................ 226 第 XI页 9.4 MAP 的增删改查操作........................................................................................................................................................ 228 9.5 MAP 遍历:........................................................................................................................................................................ 230 9.6 MAP 切片............................................................................................................................................................................ 231 9.6.1 基本介绍....................................................................................................................................................231 9.6.2 案例演示....................................................................................................................................................231 9.7 MAP 排序............................................................................................................................................................................ 233 9.7.1 基本介绍....................................................................................................................................................233 9.7.2 案例演示....................................................................................................................................................233 9.8 MAP 使用细节.................................................................................................................................................................... 234 9.9 MAP 的课堂练习题............................................................................................................................................................ 235 第 10 章 面向对象编程(上)..................................................................................................................................................... 238 10.1 结构体............................................................................................................................................................................. 238 10.1.1 看一个问题..............................................................................................................................................238 10.1.2 使用现有技术解决..................................................................................................................................238 10.1.3 现有技术解决的缺点分析......................................................................................................................239 10.1.4 一个程序就是一个世界,有很多对象(变量).......................................................................................239 10.1.5 Golang 语言面向对象编程说明..............................................................................................................239 10.1.6 结构体与结构体变量(实例/对象)的关系示意图..................................................................................240 10.1.7 快速入门-面向对象的方式(struct)解决养猫问题................................................................................ 240 10.1.8 结构体和结构体变量(实例)的区别和联系...........................................................................................241 10.1.9 结构体变量(实例)在内存的布局(重要!)...............................................................................................241 10.1.10 如何声明结构体....................................................................................................................................242 10.1.11 字段/属性...............................................................................................................................................242 10.1.12 创建结构体变量和访问结构体字段................................................................................................... 245 10.1.13 struct 类型的内存分配机制...................................................................................................................247 10.1.14 结构体使用注意事项和细节................................................................................................................249 10.2 方法................................................................................................................................................................................. 252 10.2.1 基本介绍..................................................................................................................................................252 10.2.2 方法的声明和调用..................................................................................................................................253 10.2.3 方法快速入门..........................................................................................................................................255 10.2.4 方法的调用和传参机制原理:(重要!)...............................................................................................256 10.2.5 方法的声明(定义)................................................................................................................................... 257 10.2.6 方法的注意事项和细节..........................................................................................................................258 10.2.7 方法的课堂练习题..................................................................................................................................260 10.2.8 方法的课后练习题..................................................................................................................................264 10.2.9 方法和函数区别......................................................................................................................................264 10.3 面向对象编程应用实例.................................................................................................................................................266 10.3.1 步骤..........................................................................................................................................................266 第 XII页 10.3.2 学生案例:..............................................................................................................................................266 10.3.3 小狗案例 [学员课后练习].....................................................................................................................268 10.3.4 盒子案例..................................................................................................................................................268 10.3.5 景区门票案例..........................................................................................................................................269 10.4 创建结构体变量时指定字段值.....................................................................................................................................270 10.5 工厂模式......................................................................................................................................................................... 271 10.5.1 说明..........................................................................................................................................................271 10.5.2 看一个需求..............................................................................................................................................272 10.5.3 工厂模式来解决问题..............................................................................................................................272 10.5.4 思考题......................................................................................................................................................274 第 11 章 面向对象编程(下)..................................................................................................................................................... 275 11.1 VSCODE 的使用............................................................................................................................................................... 275 11.1.1 VSCode 使用技巧和经验........................................................................................................................ 275 11.2 面向对象编程思想-抽象................................................................................................................................................276 11.2.1 抽象的介绍.............................................................................................................................................. 276 11.2.2 代码实现.................................................................................................................................................. 276 11.3 面向对象编程三大特性-封装........................................................................................................................................280 11.3.1 基本介绍.................................................................................................................................................. 280 11.3.2 封装介绍.................................................................................................................................................. 280 11.3.3 封装的理解和好处..................................................................................................................................280 11.3.4 如何体现封装..........................................................................................................................................281 11.3.5 封装的实现步骤......................................................................................................................................281 11.3.6 快速入门案例..........................................................................................................................................282 11.3.7 课堂练习(学员先做)............................................................................................................................... 284 11.4 面向对象编程三大特性-继承........................................................................................................................................288 11.4.1 看一个问题,引出继承的必要性..........................................................................................................288 11.4.2 继承基本介绍和示意图..........................................................................................................................292 11.4.3 嵌套匿名结构体的基本语法..................................................................................................................293 11.4.4 快速入门案例..........................................................................................................................................293 11.4.5 继承给编程带来的便利..........................................................................................................................297 11.4.6 继承的深入讨论......................................................................................................................................297 11.4.7 课堂练习.................................................................................................................................................. 300 11.4.8 面向对象编程-多重继承........................................................................................................................ 301 11.5 接口(INTERFACE)............................................................................................................................................................. 302 11.5.1 基本介绍.................................................................................................................................................. 302 11.5.2 为什么有接口..........................................................................................................................................302 11.5.3 接口快速入门..........................................................................................................................................303 11.5.4 接口概念的再说明..................................................................................................................................306 第 XIII页 11.5.5 基本语法.................................................................................................................................................. 306 11.5.6 接口使用的应用场景..............................................................................................................................306 11.5.7 注意事项和细节......................................................................................................................................307 11.5.8 课堂练习.................................................................................................................................................. 311 11.5.9 接口编程的最佳实践..............................................................................................................................312 11.5.10 实现接口 vs 继承................................................................................................................................ 316 11.6 面向对象编程-多态........................................................................................................................................................319 11.6.1 基本介绍.................................................................................................................................................. 319 11.6.2 快速入门.................................................................................................................................................. 319 11.6.3 接口体现多态的两种形式......................................................................................................................320 11.7 类型断言......................................................................................................................................................................... 322 11.7.1 由一个具体的需要,引出了类型断言..................................................................................................322 11.7.2 基本介绍.................................................................................................................................................. 323 11.7.3 类型断言的最佳实践 1...........................................................................................................................324 11.7.4 类型断言的最佳实践 2...........................................................................................................................327 11.7.5 类型断言的最佳实践 3 【学员自己完成】.........................................................................................329 第 12 章 项目 1-家庭收支记账软件项目............................................................................................................................... 330 12.1 项目开发流程说明.........................................................................................................................................................330 12.2 项目需求说明................................................................................................................................................................. 330 12.3 项目的界面..................................................................................................................................................................... 330 12.4 项目代码实现................................................................................................................................................................. 331 12.4.1 实现基本功能(先使用面向过程,后面改成面向对象)..........................................................................331 12.4.2 项目代码实现改进..................................................................................................................................334 12.4.3 对项目的扩展功能的练习......................................................................................................................341 第 13 章 项目 2-客户信息关系系统....................................................................................................................................... 342 13.1 项目需求分析................................................................................................................................................................. 342 13.2 项目的界面设计............................................................................................................................................................. 342 13.3 客户关系管理系统的程序框架图.................................................................................................................................344 13.4 项目功能实现-显示主菜单和完成退出软件功能....................................................................................................... 344 13.5 项目功能实现-完成显示客户列表的功能................................................................................................................... 349 13.6 项目功能实现-添加客户的功能................................................................................................................................... 353 13.7 项目功能实现-完成删除客户的功能........................................................................................................................... 356 13.8 项目功能实现-完善退出确认功能(课后作业)....................................................................................................... 359 13.9 客户关系管理系统-课后练习....................................................................................................................................... 360 第 14 章 文件操作....................................................................................................................................................................361 14.1 文件的基本介绍............................................................................................................................................................. 361 14.2 打开文件和关闭文件.....................................................................................................................................................362 第 XIV页 14.3 读文件操作应用实例.....................................................................................................................................................363 14.4 写文件操作应用实例.....................................................................................................................................................365 14.4.1 基本介绍-os.OpenFile 函数....................................................................................................................365 14.4.2 基本应用实例-方式一............................................................................................................................ 366 14.4.3 基本应用实例-方式二............................................................................................................................ 371 14.4.4 判断文件是否存在..................................................................................................................................372 14.5 文件编程应用实例.........................................................................................................................................................373 14.5.1 拷贝文件..................................................................................................................................................373 14.5.2 统计英文、数字、空格和其他字符数量............................................................................................. 375 14.6 命令行参数..................................................................................................................................................................... 377 14.6.1 看一个需求..............................................................................................................................................377 14.6.2 基本介绍..................................................................................................................................................378 14.6.3 举例说明..................................................................................................................................................378 14.6.4 flag 包用来解析命令行参数................................................................................................................... 378 14.7 JSON 基本介绍..................................................................................................................................................................379 14.8 JSON 数据格式说明..........................................................................................................................................................380 14.9 JSON 数据在线解析..........................................................................................................................................................381 14.10 JSON 的序列化................................................................................................................................................................382 14.11 JSON 的反序列化............................................................................................................................................................386 第 15 章 单元测试....................................................................................................................................................................391 15.1 先看一个需求................................................................................................................................................................. 391 15.2 传统的方法..................................................................................................................................................................... 391 15.2.1 传统的方式来进行测试..........................................................................................................................391 15.2.2 传统方法的缺点分析..............................................................................................................................392 15.3 单元测试-基本介绍........................................................................................................................................................392 15.4 单元测试-快速入门........................................................................................................................................................393 15.4.1 单元测试快速入门总结..........................................................................................................................394 15.5 单元测试-综合案例........................................................................................................................................................395 第 16 章 GOROUTINE 和 CHANNEL...............................................................................................................................400 16.1 GOROUTINE-看一个需求.................................................................................................................................................. 400 16.2 GOROUTINE-基本介绍...................................................................................................................................................... 400 16.2.1 进程和线程介绍......................................................................................................................................400 16.2.2 程序、进程和线程的关系示意图..........................................................................................................400 16.2.3 并发和并行..............................................................................................................................................401 16.2.4 Go 协程和 Go 主线程..............................................................................................................................402 16.3 GOROUTINE-快速入门...................................................................................................................................................... 403 16.3.1 案例说明..................................................................................................................................................403 第 XV页 16.3.2 快速入门小结..........................................................................................................................................405 16.4 GOROUTINE 的调度模型...................................................................................................................................................405 16.4.1 MPG 模式基本介绍................................................................................................................................. 405 16.4.2 MPG 模式运行的状态 1..........................................................................................................................406 16.4.3 MPG 模式运行的状态 2..........................................................................................................................406 16.5 设置 GOLANG 运行的 CPU 数.........................................................................................................................................407 16.6 CHANNEL(管道)-看个需求...............................................................................................................................................408 16.6.1 不同 goroutine 之间如何通讯................................................................................................................ 410 16.6.2 使用全局变量加锁同步改进程序..........................................................................................................411 16.6.3 为什么需要 channel................................................................................................................................ 412 16.6.4 channel 的基本介绍................................................................................................................................. 412 16.6.5 定义/声明 channel................................................................................................................................... 413 16.6.6 管道的初始化,写入数据到管道,从管道读取数据及基本的注意事项.........................................413 16.6.7 channel 使用的注意事项......................................................................................................................... 415 16.6.8 读写 channel 案例演示........................................................................................................................... 416 16.7 管道的课后练习题.........................................................................................................................................................419 16.8 CHANNEL 的遍历和关闭..................................................................................................................................................419 16.8.1 channel 的关闭......................................................................................................................................... 419 16.8.2 channel 的遍历......................................................................................................................................... 420 16.8.3 channel 遍历和关闭的案例演示............................................................................................................. 420 16.8.4 应用实例 1...............................................................................................................................................421 16.8.5 应用实例 2-阻塞..................................................................................................................................... 424 16.8.6 应用实例 3...............................................................................................................................................425 16.9 CHANNEL 使用细节和注意事项......................................................................................................................................429 第 17 章 反射............................................................................................................................................................................ 435 17.1 先看一个问题,反射的使用场景.................................................................................................................................435 17.2 使用反射机制,编写函数的适配器, 桥连接..............................................................................................................435 17.3 反射的基本介绍............................................................................................................................................................. 436 17.3.1 基本介绍..................................................................................................................................................436 17.3.2 反射的应用场景......................................................................................................................................436 17.3.3 反射重要的函数和概念..........................................................................................................................437 17.4 反射的快速入门............................................................................................................................................................. 439 17.4.1 快速入门说明..........................................................................................................................................439 17.5 反射的注意事项和细节.................................................................................................................................................442 17.6 反射课堂练习................................................................................................................................................................. 444 17.7 反射最佳实践................................................................................................................................................................. 445 17.8 课后作业......................................................................................................................................................................... 449 第 18 章 TCP 编程................................................................................................................................................................... 450 第 XVI页 18.1 看两个实际应用............................................................................................................................................................. 450 18.2 网络编程基本介绍.........................................................................................................................................................450 18.2.1 网线,网卡,无线网卡................................................................................................................................450 18.2.2 协议(tcp/ip).............................................................................................................................................. 451 18.2.3 OSI 与 Tcp/ip 参考模型 (推荐 tcp/ip 协议 3 卷)...................................................................................451 18.2.4 ip 地址.......................................................................................................................................................452 18.2.5 端口(port)-介绍....................................................................................................................................... 453 18.2.6 端口(port)-分类....................................................................................................................................... 454 18.2.7 端口(port)-使用注意............................................................................................................................... 454 18.3 TCP SOCKET 编程的客户端和服务器端..........................................................................................................................455 18.4 TCP SOCKET 编程的快速入门.......................................................................................................................................... 455 18.4.1 服务端的处理流程..................................................................................................................................455 18.4.2 客户端的处理流程..................................................................................................................................455 18.4.3 简单的程序示意图..................................................................................................................................456 18.4.4 代码的实现..............................................................................................................................................456 18.5 经典项目-海量用户即时通讯系统............................................................................................................................... 461 18.5.1 项目开发流程..........................................................................................................................................461 18.5.2 需求分析..................................................................................................................................................462 18.5.3 界面设计..................................................................................................................................................462 18.5.4 项目开发前技术准备..............................................................................................................................462 18.5.5 实现功能-显示客户端登录菜单............................................................................................................ 463 18.5.6 实现功能-完成用户登录........................................................................................................................ 466 18.5.7 实现功能-完成注册用户........................................................................................................................ 501 18.5.8 实现功能-完成登录时能返回当前在线用户........................................................................................ 509 18.5.9 实现功能-完成登录用可以群聊............................................................................................................ 520 18.5.10 聊天的项目的扩展功能要求................................................................................................................529 第 19 章 REDIS 的使用...........................................................................................................................................................530 19.1 REDIS 基本介绍............................................................................................................................................................... 530 19.1.1 Redis 的安装.............................................................................................................................................530 19.1.2 Redis 操作的基本原理图.........................................................................................................................530 19.2 REDIS 的安装和基本使用............................................................................................................................................... 531 19.2.1 Redis 的启动:............................................................................................................................................531 19.3 REDIS 的操作指令一览................................................................................................................................................... 531 19.3.1 Redis 的基本使用:....................................................................................................................................532 19.4 REDIS 的 CRUD 操作........................................................................................................................................................ 533 19.4.1 Redis 的五大数据类型:........................................................................................................................... 533 19.4.2 String(字符串) -介绍................................................................................................................................533 19.4.3 String(字符串)-使用细节和注意事项.....................................................................................................534 第 XVII页 19.4.4 Hash (哈希,类似 golang 里的 Map)-介绍............................................................................................535 19.4.5 Hash(哈希,类似 golang 里的 Map)-CRUD.................................................................................... 536 19.4.6 Hash-使用细节和注意事项..................................................................................................................... 537 19.4.7 课堂练习..................................................................................................................................................537 19.4.8 List(列表)-介绍................................................................................................................................... 538 19.4.9 List(列表)-CRUD................................................................................................................................ 538 19.4.10 List-使用细节和注意事项..................................................................................................................... 540 19.4.11 Set(集合) - 介绍.....................................................................................................................................540 19.4.12 Set(集合)- CRUD....................................................................................................................................541 19.4.13 Set 课堂练习...........................................................................................................................................542 19.5 GOLANG 操作 REDIS........................................................................................................................................................ 542 19.5.1 安装第三方开源 Redis 库.......................................................................................................................542 19.5.2 Set/Get 接口..............................................................................................................................................543 19.5.3 操作 Hash.................................................................................................................................................544 19.5.4 批量 Set/Get 数据....................................................................................................................................548 19.5.5 给数据设置有效时间..............................................................................................................................549 19.5.6 操作 List...................................................................................................................................................549 19.5.7 Redis 链接池.............................................................................................................................................549 第 20 章 数据结构....................................................................................................................................................................554 20.1 数据结构(算法)的介绍.................................................................................................................................................. 554 20.2 数据结构和算法的关系.................................................................................................................................................554 20.3 看几个实际编程中遇到的问题.....................................................................................................................................554 20.4 稀疏 SPARSEARRAY 数组.................................................................................................................................................557 20.4.1 先看一个实际的需求..............................................................................................................................557 20.4.2 基本介绍..................................................................................................................................................557 20.4.3 稀疏数组举例说明..................................................................................................................................558 20.4.4 应用实例..................................................................................................................................................558 20.5 队列(QUEUE)....................................................................................................................................................................563 20.5.1 队列的应用场景......................................................................................................................................563 20.5.2 队列介绍..................................................................................................................................................563 20.5.3 数组模拟队列..........................................................................................................................................564 20.5.4 数组模拟环形队列..................................................................................................................................569 20.6 链表................................................................................................................................................................................. 575 20.6.1 链表介绍..................................................................................................................................................575 20.6.2 单链表的介绍..........................................................................................................................................575 20.6.3 单链表的应用实例..................................................................................................................................576 20.6.4 双向链表的应用实例..............................................................................................................................582 20.6.5 单向环形链表的应用场景......................................................................................................................590 第 XVIII页 20.6.6 环形单向链表介绍..................................................................................................................................591 20.6.7 环形的单向链表的案例..........................................................................................................................591 20.6.8 环形单向链表的应用实例......................................................................................................................597 20.7 排序................................................................................................................................................................................. 603 20.7.1 排序的介绍..............................................................................................................................................603 20.7.2 冒泡排序..................................................................................................................................................603 20.7.3 选择排序基本介绍..................................................................................................................................603 20.7.4 选择排序思想:.........................................................................................................................................604 20.7.5 选择排序的示意图..................................................................................................................................604 20.7.6 代码实现..................................................................................................................................................604 20.7.7 插入排序法介绍:.....................................................................................................................................605 20.7.8 插入排序法思想:.....................................................................................................................................606 20.7.9 插入排序的示意图..................................................................................................................................606 20.7.10 插入排序法应用实例............................................................................................................................606 20.7.11 插入排序的代码实现............................................................................................................................607 20.7.12 快速排序法介绍....................................................................................................................................607 20.7.13 快速排序法示意图................................................................................................................................608 20.7.14 快速排序法应用实例............................................................................................................................608 20.7.15 快速排序法的代码实现........................................................................................................................608 20.7.16 三种排序方法的速度的分析................................................................................................................611 20.8 栈..................................................................................................................................................................................... 611 20.8.1 看一个实际需求......................................................................................................................................611 20.8.2 栈的介绍..................................................................................................................................................612 20.8.3 栈的入栈和出栈的示意图......................................................................................................................612 20.8.4 栈的应用场景..........................................................................................................................................613 20.8.5 栈的案例..................................................................................................................................................613 20.8.6 栈实现综合计算器..................................................................................................................................615 20.9 递归................................................................................................................................................................................. 624 20.9.1 递归的一个应用场景[迷宫问题]...........................................................................................................624 20.9.2 递归的概念..............................................................................................................................................624 20.9.3 递归快速入门..........................................................................................................................................624 20.9.4 递归用于解决什么样的问题..................................................................................................................625 20.9.5 递归需要遵守的重要原则......................................................................................................................625 20.9.6 举一个比较综合的案例,迷宫问题.........................................................................................................626 20.10 哈希表(散列)................................................................................................................................................................ 630 20.10.1 实际的需求............................................................................................................................................630 20.10.2 哈希表的基本介绍................................................................................................................................630 20.10.3 使用 hashtable 来实现一个雇员的管理系统[增删改查].................................................................. 631