GitVP开源文摘
全部文章/后端开发

go-fundamental-programming

《Go 编程基础》是一套针对 Google 出品的 Go 语言的视频语音教程,主要面向新手级别的学习者。

作者unknwon 仓库unknwon/go-fundamental-programming ↗ 星标★ 9,116 字数16,849 阅读1
GitHub 原文 ↗
摘要借用《Go Web 编程》一书中的话,出本套教程并不代表我自身的能力有多强,而是我愿意将自己在学习过程中积累到的知识分享给大家,并结合自己遇到的一些坑爹经历来讲解如何处理各种奇葩问题,从而更好地帮助广大的和潜在的 Go 语言爱好者。

《Go 编程基础》 ==========================

借用《Go Web 编程》一书中的话,出本套教程并不代表我自身的能力有多强,而是我愿意将自己在学习过程中积累到的知识分享给大家,并结合自己遇到的一些坑爹经历来讲解如何处理各种奇葩问题,从而更好地帮助广大的和潜在的 Go 语言爱好者。

基本信息

  • 教程讲师:无闻
  • 教程简介:《Go 编程基础》是一套针对 Google 出品的 Go 语言的视频语音教程,主要面向 Go 语言新手级别的学习者。
  • 开发环境:Go 语言 1.0.3-1.8.* 版本
  • 开发工具:Sublime Text 2-3
  • 开发系统:Windows 7 64 位
  • 其它说明:每堂课都会建立一个文件(例如:lecture1.md)作为课堂笔记。课堂笔记中里面包含了该堂课所涵盖的知识点以及知识点开始讲解的时间点,方便学习者快速定位要了解的部分,节省不必要浪费的时间。此外,如果教程中因口误或其它原因使学习者产生迷惑的部分,同样会在课堂笔记中进行补充说明。
  • 收录网站:
- [哔哩哔哩](https://space.bilibili.com/2030700139/channel/collectiondetail?sid=278107&ctype=0)
- [YouTube](https://www.youtube.com/playlist?list=PLDZk3eV9LVFV08Wy0A0jW2YRErn-FBrCP)
- [网易云课堂](http://study.163.com/course/introduction.htm?courseId=306002#/courseDetail)
- 强烈谴责 **51CTO 学院** 购买会员才能观看
  • 课程下载:
- [腾讯微云](https://share.weiyun.com/7UsYOQmS)
- [百度网盘](https://pan.baidu.com/s/1yeT0OVTrmQMME8C7Zwg9aQ)(提取码:z8uj)

教程大纲

课时数课时标题在线播放
第 1 课Go 开发环境搭建哔哩哔哩 网易云课堂
第 2 课Go 基础知识哔哩哔哩 网易云课堂
第 3 课类型与变量哔哩哔哩 网易云课堂
第 4 课常量与运算符哔哩哔哩 网易云课堂
第 5 课控制语句哔哩哔哩 网易云课堂
第 6 课数组 array哔哩哔哩 网易云课堂
第 7 课切片 slice哔哩哔哩 网易云课堂
第 8 课map哔哩哔哩 网易云课堂
第 9 课函数 function哔哩哔哩 网易云课堂
第 10 课结构 struct哔哩哔哩 网易云课堂
第 11 课方法 method哔哩哔哩 网易云课堂
第 12 课接口 interface哔哩哔哩 网易云课堂
第 13 课反射 reflection哔哩哔哩 网易云课堂
第 14 课并发 concurrency哔哩哔哩 网易云课堂
第 15 课项目与坑哔哩哔哩 网易云课堂

授权许可

除特别声明外,本套教程中的内容使用 CC BY-SA 3.0 License(创作共用 署名-相同方式共享 3.0 许可协议)授权,代码遵循 BSD 3-Clause License(3 项条款的 BSD 许可协议)。

鸣谢

参考资料


lecture1

第 1 课:Go 开发环境搭建 ==========================

基本信息

课程大纲

[00:00] Go 基本介绍
[04:10] 安装 Go 语言
[05:00] Go 环境变量与工作目录
[07:27] Go 命令简介
[11:06] godoc 建立本地文档
[15:40] Sublime Text 安装与配置
[18:05] "Hello world!"

补充说明

  • 如果对安装 Sublime Text 部分不是很理解,完整教程请参考 博文

相关链接

课程链接


lecture2

第 2 课:Go 基础知识 ==========================

基本信息

课程大纲

[00:00] 课堂笔记的使用方法
[01:36] Go内置关键字和注释方法
[02:08] Go程序的一般结构
[07:25] 包的导入
[09:43] package别名与省略调用
[11:45] 可见性规则
[13:53] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • gosublime 调出内置命令行快捷键 Ctrl+B(windows)

相关链接

  • 暂无链接

课程链接


lecture3

第 3 课:类型与变量 ==========================

基本信息

课程大纲

[00:00] 知识回顾
[04:57] 基本类型
[11:25] 类型零值
[16:30] 类型别名
[19:20] 变量的声明与赋值
[29:20] 类型转换
[32:13] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 从严格意义上讲 type newInt int, 这里 newInt 并不能说是 int 的别名,而只是底层数据结构相同,在这里称为自定义类型,在进行类型转换时仍旧需要显式转换,但 byte 和 rune 确确实实为 uint8 和 int32 的别名,可以相互进行转换。有关于自定义类型将在后面的教程中进行讲解。
  • Var() 变量组可以在函数体内用于声明局部变量,感谢 Hubery 指出,但并不建议这样使用。

相关链接

  • 暂无链接

视频错误

[04:30]
	var组只能声明全局变量,不能在函数体中使用。[x]
	var组只能声明全局变量,也可以在函数体中使用。[√]

课程链接


lecture4

第 4 课:常量与运算符 ==========================

基本信息

课程大纲

[00:00] 知识回顾
[04:35] 常量的定义
[11:30] 常量的枚举
[17:05] 运算符
[27:45] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

相关链接

  • 暂无链接

课程链接


lecture5

第 5 课:控制语句 ==========================

基本信息

课程大纲

[00:00] 知识回顾
[03:51] 基础知识补充(指针、递增递减语句)
[06:45] if判断语句
[10:32] for循环语句
[15:50] switch选择语句
[21:26] 跳转语句
[27:42] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 如果在 if 的条件语句两边加上括号不会报错,但在 gofmt 时会自动消除

相关链接

  • 暂无链接

课程链接


lecture6

第 6 课:数组 array ==========================

基本信息

课程大纲

[00:00] 知识回顾
[04:23] array的定义
[10:02] 指向数组的指针和指针数组
[12:30] 数组之间的比较
[14:22] 使用new创建数组
[16:09] 多维数组
[18:45] 冒泡排序

作业答案

  • 暂无作业

补充说明

  • for 循环中声明的变量在每次循环结束都会消失,作用域只在当次循环

相关链接

  • 暂无链接

课程链接


lecture7

第 7 课:切片 slice ==========================

基本信息

课程大纲

[00:00] 知识回顾
[03:15] slice 概述
[05:20] 创建 slice
[18:25] reslice 概述
[23:00] append()与slice
[29:55] copy()与slice
[33:55] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 26:37 处的“数组” a 实际为切片,但不影响教程演示。若想其成为数组,应把 [] 改为 [...]。

相关链接

  • 暂无链接

课程链接


lecture8

第 8 课:map ==========================

基本信息

课程大纲

[00:00] 知识回顾
[04:00] map 概述
[05:10] 简单 map 的创建与使用
[08:26] 复杂 map 与键值对操作
[13:10] map 与 slice 的迭代操作
[15:15] 元素类型为 map 的 slice
[18:45] map 的间接排序
[22:30] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 在开头的知识回顾中,reslice 的操作只是将 slice 指向底层的指针的值进行了调整,而未发生值的拷贝。

相关链接

  • 暂无链接

课程链接


lecture9

第 9 课:函数 function ==========================

基本信息

课程大纲

[00:00] 知识回顾
[03:50] 函数概述
[05:00] 函数的定义与使用
[08:00] 不定长变参
[10:52] 传递值类型和引用类型
[13:20] 匿名函数与闭包
[18:15] defer 用法
[23:06] panic 与 recover
[28:06] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 暂无说明

相关链接

  • 暂无链接

课程链接


lecture10

第 10 课:结构 struct ==========================

基本信息

课程大纲

[00:00] 知识回顾
[08:28] 结构的定义与使用
[12:45] 使用字面值初始化
[18:05] 匿名结构与字段
[23:43] 结构间的赋值与比较
[26:10] 嵌入结构
[31:25] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 暂无说明

相关链接

  • 暂无链接

课程链接


lecture11

第 11 课:方法 method ==========================

基本信息

课程大纲

[00:00] 知识回顾
[06:30] 方法的声明与使用
[13:05] 类型别名与方法
[16:30] Method Value 与 Method Expression
[18:43] 方法名称冲突与字段访问权限
[21:20] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 暂无说明

相关链接

  • 暂无链接

课程链接


lecture12

第 12 课:接口 interface ==========================

基本信息

课程大纲

[00:00] 知识回顾
[04:30] 接口的定义与基本操作
[10:43] 嵌入接口
[12:45] 类型断言
[13:58] 空接口与 type switch
[18:48] 接口转换
[22:07] 接口使用注意事项

补充说明

  • 暂无说明

相关链接

课程链接


lecture13

第 13 课:反射 reflection ==========================

基本信息

课程大纲

[00:00] 知识回顾
[04:28] 反射基本操作
[12:10] 反射匿名或嵌入字段
[16:10] 修改目标对象
[24:10] 动态调用方法
[28:15] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 视频第 22 分 33 秒,代码第 23 行应该为 if v.Kind() != reflect.Ptr || !v.Elem().CanSet() {。

相关链接

  • 暂无链接

课程链接


lecture14

第 14 课:并发 concurrency ==========================

基本信息

课程大纲

[00:00] 知识回顾
[03:17] 初窥 goroutine
[08:45] channel 概述
[20:20] 多个 goroutine 打印
[29:00] select 概述
[47:17] 课堂作业布置

作业答案

  • 下堂课讲解

补充说明

  • 暂无说明

相关链接

课程链接


lecture15

第 15 课:项目与坑 ==========================

基本信息

课程大纲

[00:00] 知识回顾
[06:32] 完整项目结构
[15:15] slice 与 append 的坑
[19:45] time.Format 的坑
[23:02] range 与闭包的坑

补充说明

  • 暂无说明

相关链接

  • 暂无链接

课程链接

本文由 GitVP 从 GitHub 收录并在站内全文呈现,版权归原作者所有。

← 回到全部文章

同分类还有