├── .gitignore ├── README.md └── lectures ├── 01_hello.go ├── 02_basic_structure.go ├── 03_type-alias.go ├── 06_bubble_sort.go ├── 08_exchange_key-value.go ├── 09_closure.go ├── lecture1.md ├── lecture10.md ├── lecture11.md ├── lecture12.md ├── lecture13.md ├── lecture14.md ├── lecture15.md ├── lecture2.md ├── lecture3.md ├── lecture4.md ├── lecture5.md ├── lecture6.md ├── lecture7.md ├── lecture8.md └── lecture9.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | temp.go -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 《Go 编程基础》 2 | ========================== 3 | 4 | 借用《Go Web 编程》一书中的话,出本套教程并不代表我自身的能力有多强,而是我愿意将自己在学习过程中积累到的知识分享给大家,并结合自己遇到的一些坑爹经历来讲解如何处理各种奇葩问题,从而更好地帮助广大的和潜在的 Go 语言爱好者。 5 | 6 | ### 基本信息 7 | 8 | - **教程讲师**:[无闻](http://weibo.com/Obahua) 9 | - **教程简介**:《Go 编程基础》是一套针对 Google 出品的 Go 语言的视频语音教程,主要面向 Go 语言新手级别的学习者。 10 | - **开发环境**:Go 语言 1.0.3-1.8.* 版本 11 | - **开发工具**:Sublime Text 2-3 12 | - **开发系统**:Windows 7 64 位 13 | - **其它说明**:每堂课都会建立一个文件(例如:`lecture1.md`)作为课堂笔记。课堂笔记中里面包含了该堂课所涵盖的知识点以及知识点开始讲解的时间点,方便学习者快速定位要了解的部分,节省不必要浪费的时间。此外,如果教程中因口误或其它原因使学习者产生迷惑的部分,同样会在课堂笔记中进行补充说明。 14 | - **收录网站**: 15 | - [哔哩哔哩](https://space.bilibili.com/2030700139/channel/collectiondetail?sid=278107&ctype=0) 16 | - [YouTube](https://www.youtube.com/playlist?list=PLDZk3eV9LVFV08Wy0A0jW2YRErn-FBrCP) 17 | - [网易云课堂](http://study.163.com/course/introduction.htm?courseId=306002#/courseDetail) 18 | - 强烈谴责 **51CTO 学院** 购买会员才能观看 19 | - **课程下载**: 20 | - [腾讯微云](https://share.weiyun.com/7UsYOQmS) 21 | - [百度网盘](https://pan.baidu.com/s/1yeT0OVTrmQMME8C7Zwg9aQ)(提取码:z8uj) 22 | 23 | ### 教程大纲 24 | 25 | | 课时数 | 课时标题 | 在线播放 | 26 | |:-----:|:--------|:-------| 27 | |第 1 课|[Go 开发环境搭建](lectures/lecture1.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1334y1U7cH/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421012&courseId=306002)| 28 | |第 2 课|[Go 基础知识](lectures/lecture2.md)|[哔哩哔哩](https://www.bilibili.com/video/BV13L4y1z7ht/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421013&courseId=306002)| 29 | |第 3 课|[类型与变量](lectures/lecture3.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1p3411y7os/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421014&courseId=306002)| 30 | |第 4 课|[常量与运算符](lectures/lecture4.md)|[哔哩哔哩](https://www.bilibili.com/video/BV13u411o7VR/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421015&courseId=306002)| 31 | |第 5 课|[控制语句](lectures/lecture5.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1bu411o7gT/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421016&courseId=306002)| 32 | |第 6 课|[数组 array](lectures/lecture6.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1134y1m7pS/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421017&courseId=306002)| 33 | |第 7 课|[切片 slice](lectures/lecture7.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1aP4y1L7hm/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421018&courseId=306002)| 34 | |第 8 课|[map](lectures/lecture8.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1cq4y1R7sA/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421019&courseId=306002)| 35 | |第 9 课|[函数 function](lectures/lecture9.md)|[哔哩哔哩](https://www.bilibili.com/video/BV18L411g77S/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421020&courseId=306002)| 36 | |第 10 课|[结构 struct](lectures/lecture10.md)|[哔哩哔哩](https://www.bilibili.com/video/BV11F411e7ic/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421021&courseId=306002)| 37 | |第 11 课|[方法 method](lectures/lecture11.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1gr4y117T4/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421022&courseId=306002)| 38 | |第 12 课|[接口 interface](lectures/lecture12.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1sF411e7HJ/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421023&courseId=306002)| 39 | |第 13 课|[反射 reflection](lectures/lecture13.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1FU4y1c7ZP/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421024&courseId=306002)| 40 | |第 14 课|[并发 concurrency](lectures/lecture14.md)|[哔哩哔哩](https://www.bilibili.com/video/BV15h41187nx/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421025&courseId=306002)| 41 | |第 15 课|[项目与坑](lectures/lecture15.md)|[哔哩哔哩](https://www.bilibili.com/video/BV1PQ4y1S7RU/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421026&courseId=306002)| 42 | 43 | ### 授权许可 44 | 45 | 除特别声明外,本套教程中的内容使用 CC BY-SA 3.0 License(创作共用 署名-相同方式共享 3.0 许可协议)授权,代码遵循 BSD 3-Clause License(3 项条款的 BSD 许可协议)。 46 | 47 | ### 鸣谢 48 | 49 | - [polaris](http://blog.studygolang.com/) 50 | - [Asta谢](https://github.com/astaxie) 51 | - [昌雄](https://github.com/insionng) 52 | - Hubery 53 | - 悠然 54 | 55 | ### 参考资料 56 | 57 | - [《Go Web 编程》](https://github.com/astaxie/build-web-application-with-golang)([Asta谢](https://github.com/astaxie)) 58 | - [《The Way to Go》](http://download.csdn.net/download/kukucckku/4394839) [中文版《Go 入门指南》](https://github.com/Unknwon/the-way-to-go_ZH_CN)(Ivo Balbaert) 59 | - [Go (programming language)](http://en.wikipedia.org/wiki/Go_%28programming_language%29)(维基百科) 60 | - [《Go 学习笔记》](http://bbs.gocn.im/thread-8-1-1.html)(雨痕) 61 | - [《Go 语言编程》](http://bbs.gocn.im/thread-153-1-1.html)(晨笛) 62 | - [《Golang 常见的坑和编程模式》](http://pan.baidu.com/share/link?shareid=2570649749&uk=822891499)([刘奇](http://weibo.com/chuangyiyongpin)) 63 | -------------------------------------------------------------------------------- /lectures/01_hello.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | fmt.Println("Hello world!你好,世界!") 9 | } 10 | -------------------------------------------------------------------------------- /lectures/02_basic_structure.go: -------------------------------------------------------------------------------- 1 | // 当前程序的包名 2 | package main 3 | 4 | // 导入其它的包 5 | import std "fmt" 6 | 7 | // 常量的定义 8 | const PI = 3.14 9 | 10 | // 全局变量的声明与赋值 11 | var name = "gopher" 12 | 13 | // 一般类型声明 14 | type newType int 15 | 16 | // 结构的声明 17 | type gopher struct{} 18 | 19 | // 接口的声明 20 | type golang interface{} 21 | 22 | // 由 main 函数作为程序入口点启动 23 | func main() { 24 | std.Println("Hello world!你好,世界!") 25 | } 26 | -------------------------------------------------------------------------------- /lectures/03_type-alias.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | type ( 8 | byte int8 9 | rune int32 10 | 文本 string 11 | ) 12 | 13 | func main() { 14 | var b 文本 15 | b = "中文啊亲" 16 | fmt.Println("文本b:" + b) 17 | } 18 | -------------------------------------------------------------------------------- /lectures/06_bubble_sort.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | // 未排序数组 9 | sort := [...]int{1, 7, 4, 2, 5} 10 | fmt.Println(sort) 11 | 12 | // 冒泡排序,由大到小 13 | num := len(sort) 14 | for i := 0; i < num; i++ { 15 | for j := i + 1; j < num; j++ { 16 | // 比较大小 17 | if sort[i] < sort[j] { 18 | temp := sort[i] 19 | sort[i] = sort[j] 20 | sort[j] = temp 21 | } 22 | } 23 | } 24 | 25 | fmt.Println(sort) 26 | } 27 | -------------------------------------------------------------------------------- /lectures/08_exchange_key-value.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | m1 := map[int]string{1: "a", 2: "b", 3: "c", 4: "d", 5: "e", 9 | 6: "f", 7: "g", 8: "h", 9: "i", 0: "j"} 10 | fmt.Println("m1", m1) 11 | m2 := make(map[string]int) 12 | for i, v := range m1 { 13 | m2[v] = i 14 | } 15 | fmt.Println("m2", m2) 16 | } 17 | -------------------------------------------------------------------------------- /lectures/09_closure.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | var fs = [4]func(){} 9 | 10 | for i := 0; i < 4; i++ { 11 | defer fmt.Println("defer i = ", i) 12 | defer func() { fmt.Println("defer_closure i = ", i) }() 13 | fs[i] = func() { fmt.Println("closure i = ", i) } 14 | } 15 | 16 | for _, f := range fs { 17 | f() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /lectures/lecture1.md: -------------------------------------------------------------------------------- 1 | 第 1 课:Go 开发环境搭建 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:20:02 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1334y1U7cH/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421012&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] Go 基本介绍 12 | [04:10] 安装 Go 语言 13 | [05:00] Go 环境变量与工作目录 14 | [07:27] Go 命令简介 15 | [11:06] godoc 建立本地文档 16 | [15:40] Sublime Text 安装与配置 17 | [18:05] "Hello world!" 18 | 19 | ### 补充说明 20 | 21 | - 如果对安装 Sublime Text 部分不是很理解,完整教程请参考 [博文](http://my.oschina.net/Obahua/blog/110767) 22 | 23 | ### 相关链接 24 | 25 | - [Go 在谷歌:以软件工程为目的的语言设计](http://www.oschina.net/translate/go-at-google-language-design-in-the-service-of-software-engineering) 26 | - [go-wiki](https://code.google.com/p/go-wiki/wiki/Projects) 27 | - [Go Walker](http://gowalker.org/) 28 | - [Go Language Resources](http://go-lang.cat-v.org/library-bindings) 29 | - [Golang 相关 QQ 群](https://docs.google.com/spreadsheet/lv?key=0AqIvOG5Y0CJ6dFFJV0JwSm1kbEtEdmg5Nk1uZndzakE) 30 | - Go 源码安装:[参考链接](https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/01.1.md) 31 | - Go 标准包安装:[下载地址](http://www.golangtc.com/download) 32 | - [CHM手册](https://github.com/astaxie/godoc) 33 | - 其它 IDE 安装方案:[参考链接](https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/01.4.md) 34 | - 下载 Sublime Text:[官方网站](http://www.sublimetext.com/) 35 | - 安装 gosublime(破解版可能无法安装):[安装指令](http://my.oschina.net/Obahua/blog/110767) 36 | - [Sublime Text 2 入门及技巧](http://lucifr.com/2011/08/31/sublime-text-2-tricks-and-tips/) 37 | - [Go 初学者常问的问题 FAQ](http://bbs.studygolang.com/thread-67-1-1.html) 38 | 39 | ### 课程链接 40 | 41 | - [第 2 课:Go 基础知识](lecture2.md) 42 | -------------------------------------------------------------------------------- /lectures/lecture10.md: -------------------------------------------------------------------------------- 1 | 第 10 课:结构 struct 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:38:57 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV11F411e7ic/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421021&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [08:28] 结构的定义与使用 13 | [12:45] 使用字面值初始化 14 | [18:05] 匿名结构与字段 15 | [23:43] 结构间的赋值与比较 16 | [26:10] 嵌入结构 17 | [31:25] 课堂作业布置 18 | 19 | ### 作业答案 20 | 21 | - 下堂课讲解 22 | 23 | ### 补充说明 24 | 25 | - 暂无说明 26 | 27 | ### 相关链接 28 | 29 | - 暂无链接 30 | 31 | ### 课程链接 32 | 33 | - [第 9 课:函数 function](lecture9.md) 34 | - [第 11 课:方法 method](lecture11.md) 35 | -------------------------------------------------------------------------------- /lectures/lecture11.md: -------------------------------------------------------------------------------- 1 | 第 11 课:方法 method 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:23:13 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1gr4y117T4/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421022&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [06:30] 方法的声明与使用 13 | [13:05] 类型别名与方法 14 | [16:30] Method Value 与 Method Expression 15 | [18:43] 方法名称冲突与字段访问权限 16 | [21:20] 课堂作业布置 17 | 18 | ### 作业答案 19 | 20 | - 下堂课讲解 21 | 22 | ### 补充说明 23 | 24 | - 暂无说明 25 | 26 | ### 相关链接 27 | 28 | - 暂无链接 29 | 30 | ### 课程链接 31 | 32 | - [第 10 课:结构 struct](lecture10.md) 33 | - [第 12 课:接口 interface](lecture12.md) 34 | -------------------------------------------------------------------------------- /lectures/lecture12.md: -------------------------------------------------------------------------------- 1 | 第 12 课:接口 interface 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:28:36 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1sF411e7HJ/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421023&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [04:30] 接口的定义与基本操作 13 | [10:43] 嵌入接口 14 | [12:45] 类型断言 15 | [13:58] 空接口与 type switch 16 | [18:48] 接口转换 17 | [22:07] 接口使用注意事项 18 | 19 | ### 补充说明 20 | 21 | - 暂无说明 22 | 23 | ### 相关链接 24 | 25 | - [评: 为什么我不喜欢 Go 语言式的接口](http://www.ituring.com.cn/Article/37642) 26 | 27 | ### 课程链接 28 | 29 | - [第 11 课:方法 method](lecture11.md) 30 | - [第 13 课:反射 reflection](lecture13.md) 31 | -------------------------------------------------------------------------------- /lectures/lecture13.md: -------------------------------------------------------------------------------- 1 | 第 13 课:反射 reflection 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:31:33 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1FU4y1c7ZP/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421024&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [04:28] 反射基本操作 13 | [12:10] 反射匿名或嵌入字段 14 | [16:10] 修改目标对象 15 | [24:10] 动态调用方法 16 | [28:15] 课堂作业布置 17 | 18 | ### 作业答案 19 | 20 | - 下堂课讲解 21 | 22 | ### 补充说明 23 | 24 | - 视频第 22 分 33 秒,代码第 23 行应该为 `if v.Kind() != reflect.Ptr || !v.Elem().CanSet() {`。 25 | 26 | ### 相关链接 27 | 28 | - 暂无链接 29 | 30 | ### 课程链接 31 | 32 | - [第 12 课:接口 interface](lecture12.md) 33 | - [第 14 课:并发 concurrency](lecture14.md) 34 | -------------------------------------------------------------------------------- /lectures/lecture14.md: -------------------------------------------------------------------------------- 1 | 第 14 课:并发 concurrency 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:47:52 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV15h41187nx/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421025&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [03:17] 初窥 goroutine 13 | [08:45] channel 概述 14 | [20:20] 多个 goroutine 打印 15 | [29:00] select 概述 16 | [47:17] 课堂作业布置 17 | 18 | ### 作业答案 19 | 20 | - 下堂课讲解 21 | 22 | ### 补充说明 23 | 24 | - 暂无说明 25 | 26 | ### 相关链接 27 | 28 | - [Concurrency Is Not Parallelism](http://vimeo.com/49718712) 【[PPT](http://concur.rspace.googlecode.com/hg/talk/concur.html#landing-slide)】 29 | - [Go语言_并发篇](http://www.cnblogs.com/yjf512/archive/2012/06/06/2537712.html) 30 | - [goroutine背后的系统知识](http://www.sizeofvoid.net/goroutine-under-the-hood/) 31 | - [Advanced Go Concurrency Patterns](http://v.youku.com/v_show/id_XNTcyMTA4MTM2.html) 32 | - [What exactly does runtime.Gosched do?](http://stackoverflow.com/questions/13107958/what-exactly-does-runtime-gosched-do) 33 | 34 | ### 课程链接 35 | 36 | - [第 13 课:反射 reflection](lecture13.md) 37 | - [第 15 课:项目与坑](lecture15.md) 38 | -------------------------------------------------------------------------------- /lectures/lecture15.md: -------------------------------------------------------------------------------- 1 | 第 15 课:项目与坑 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:28:56 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1PQ4y1S7RU/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421026&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [06:32] 完整项目结构 13 | [15:15] slice 与 append 的坑 14 | [19:45] time.Format 的坑 15 | [23:02] range 与闭包的坑 16 | 17 | ### 补充说明 18 | 19 | - 暂无说明 20 | 21 | ### 相关链接 22 | 23 | - 暂无链接 24 | 25 | ### 课程链接 26 | 27 | - [第 14 课:并发 concurrency](lecture14.md) 28 | -------------------------------------------------------------------------------- /lectures/lecture2.md: -------------------------------------------------------------------------------- 1 | 第 2 课:Go 基础知识 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:14:21 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV13L4y1z7ht/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421013&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 课堂笔记的使用方法 12 | [01:36] Go内置关键字和注释方法 13 | [02:08] Go程序的一般结构 14 | [07:25] 包的导入 15 | [09:43] package别名与省略调用 16 | [11:45] 可见性规则 17 | [13:53] 课堂作业布置 18 | 19 | ### 作业答案 20 | 21 | - 下堂课讲解 22 | 23 | ### 补充说明 24 | 25 | - gosublime 调出内置命令行快捷键 Ctrl+B(windows) 26 | 27 | ### 相关链接 28 | 29 | - 暂无链接 30 | 31 | ### 课程链接 32 | 33 | - [第 1 课:Go 开发环境搭建](lecture1.md) 34 | - [第 3 课:类型与变量](lecture3.md) 35 | -------------------------------------------------------------------------------- /lectures/lecture3.md: -------------------------------------------------------------------------------- 1 | 第 3 课:类型与变量 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:32:37 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1p3411y7os) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421014&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [04:57] 基本类型 13 | [11:25] 类型零值 14 | [16:30] 类型别名 15 | [19:20] 变量的声明与赋值 16 | [29:20] 类型转换 17 | [32:13] 课堂作业布置 18 | 19 | ### 作业答案 20 | 21 | - 下堂课讲解 22 | 23 | ### 补充说明 24 | 25 | - 从严格意义上讲 type newInt int, 这里 newInt 并不能说是 int 的别名,而只是底层数据结构相同,在这里称为自定义类型,在进行类型转换时仍旧需要显式转换,但 byte 和 rune 确确实实为 uint8 和 int32 的别名,可以相互进行转换。有关于自定义类型将在后面的教程中进行讲解。 26 | - Var() 变量组可以在函数体内用于声明局部变量,感谢 Hubery 指出,但并不建议这样使用。 27 | 28 | ### 相关链接 29 | 30 | - 暂无链接 31 | 32 | ### 视频错误 33 | [04:30] 34 | var组只能声明全局变量,不能在函数体中使用。[x] 35 | var组只能声明全局变量,也可以在函数体中使用。[√] 36 | 37 | 38 | ### 课程链接 39 | 40 | - [第 2 课:Go 基础知识](lecture2.md) 41 | - [第 4 课:常量与运算符](lecture4.md) 42 | -------------------------------------------------------------------------------- /lectures/lecture4.md: -------------------------------------------------------------------------------- 1 | 第 4 课:常量与运算符 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:28:21 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV13u411o7VR/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421015&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [04:35] 常量的定义 13 | [11:30] 常量的枚举 14 | [17:05] 运算符 15 | [27:45] 课堂作业布置 16 | 17 | ### 作业答案 18 | 19 | - 下堂课讲解 20 | 21 | ### 补充说明 22 | 23 | - [《Go 编程基础》视频第 4 课: 常量与运算符 笔记](http://www.cnblogs.com/ghj1976/archive/2013/04/24/3039578.html) 24 | 25 | ### 相关链接 26 | 27 | - 暂无链接 28 | 29 | ### 课程链接 30 | 31 | - [第 3 课:类型与变量](lecture3.md) 32 | - [第 5 课:控制语句](lecture5.md) 33 | -------------------------------------------------------------------------------- /lectures/lecture5.md: -------------------------------------------------------------------------------- 1 | 第 5 课:控制语句 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:28:33 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1bu411o7gT/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421016&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [03:51] 基础知识补充(指针、递增递减语句) 13 | [06:45] if判断语句 14 | [10:32] for循环语句 15 | [15:50] switch选择语句 16 | [21:26] 跳转语句 17 | [27:42] 课堂作业布置 18 | 19 | ### 作业答案 20 | 21 | - 下堂课讲解 22 | 23 | ### 补充说明 24 | 25 | - 如果在 if 的条件语句两边加上括号不会报错,但在 gofmt 时会自动消除 26 | 27 | ### 相关链接 28 | 29 | - 暂无链接 30 | 31 | ### 课程链接 32 | 33 | - [第 4 课:常量与运算符](lecture4.md) 34 | - [第 6 课:数组 array](lecture6.md) 35 | -------------------------------------------------------------------------------- /lectures/lecture6.md: -------------------------------------------------------------------------------- 1 | 第 6 课:数组 array 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:22:01 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1134y1m7pS/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421017&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [04:23] array的定义 13 | [10:02] 指向数组的指针和指针数组 14 | [12:30] 数组之间的比较 15 | [14:22] 使用new创建数组 16 | [16:09] 多维数组 17 | [18:45] 冒泡排序 18 | 19 | ### 作业答案 20 | 21 | - 暂无作业 22 | 23 | ### 补充说明 24 | 25 | - for 循环中声明的变量在每次循环结束都会消失,作用域只在当次循环 26 | 27 | ### 相关链接 28 | 29 | - 暂无链接 30 | 31 | ### 课程链接 32 | 33 | - [第 5 课:控制语句](lecture5.md) 34 | - [第 7 课:切片 slice](lecture7.md) 35 | -------------------------------------------------------------------------------- /lectures/lecture7.md: -------------------------------------------------------------------------------- 1 | 第 7 课:切片 slice 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:34:51 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1aP4y1L7hm/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421018&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [03:15] slice 概述 13 | [05:20] 创建 slice 14 | [18:25] reslice 概述 15 | [23:00] append()与slice 16 | [29:55] copy()与slice 17 | [33:55] 课堂作业布置 18 | 19 | ### 作业答案 20 | 21 | - 下堂课讲解 22 | 23 | ### 补充说明 24 | 25 | - 26:37 处的“数组” a 实际为切片,但不影响教程演示。若想其成为数组,应把 `[]` 改为 `[...]`。 26 | 27 | ### 相关链接 28 | 29 | - 暂无链接 30 | 31 | ### 课程链接 32 | 33 | - [第 6 课:数组 array](lecture6.md) 34 | - [第 8 课:map](lecture8.md) 35 | -------------------------------------------------------------------------------- /lectures/lecture8.md: -------------------------------------------------------------------------------- 1 | 第 8 课:map 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:23:55 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV1cq4y1R7sA/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421019&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [04:00] map 概述 13 | [05:10] 简单 map 的创建与使用 14 | [08:26] 复杂 map 与键值对操作 15 | [13:10] map 与 slice 的迭代操作 16 | [15:15] 元素类型为 map 的 slice 17 | [18:45] map 的间接排序 18 | [22:30] 课堂作业布置 19 | 20 | ### 作业答案 21 | 22 | - 下堂课讲解 23 | 24 | ### 补充说明 25 | 26 | - 在开头的知识回顾中,reslice 的操作只是将 slice 指向底层的指针的值进行了调整,而未发生值的拷贝。 27 | 28 | ### 相关链接 29 | 30 | - 暂无链接 31 | 32 | ### 课程链接 33 | 34 | - [第 7 课:切片 slice](lecture7.md) 35 | - [第 9 课:函数 function](lecture9.md) 36 | -------------------------------------------------------------------------------- /lectures/lecture9.md: -------------------------------------------------------------------------------- 1 | 第 9 课:函数 function 2 | ========================== 3 | 4 | ### 基本信息 5 | 6 | - **课程时长**:28:30 7 | - **在线观看**:[哔哩哔哩](https://www.bilibili.com/video/BV18L411g77S/) [网易云课堂](http://study.163.com/course/courseLearn.htm?courseId=306002#/learn/video?lessonId=421020&courseId=306002) 8 | 9 | ### 课程大纲 10 | 11 | [00:00] 知识回顾 12 | [03:50] 函数概述 13 | [05:00] 函数的定义与使用 14 | [08:00] 不定长变参 15 | [10:52] 传递值类型和引用类型 16 | [13:20] 匿名函数与闭包 17 | [18:15] defer 用法 18 | [23:06] panic 与 recover 19 | [28:06] 课堂作业布置 20 | 21 | ### 作业答案 22 | 23 | - 下堂课讲解 24 | 25 | ### 补充说明 26 | 27 | - 暂无说明 28 | 29 | ### 相关链接 30 | 31 | - 暂无链接 32 | 33 | ### 课程链接 34 | 35 | - [第 8 课:map](lecture8.md) 36 | - [第 10 课:结构 struct](lecture10.md) 37 | --------------------------------------------------------------------------------