Go 语言从入门到实战
蔡超
Mobvista 技术副总裁兼首席架构师,前亚马逊(中国)首席软件架构师
48919 人已学习
新⼈⾸单¥59
课程目录
已完结/共 55 讲
第一章:Go语言简介 (4讲)
第二章:基本程序结构 (4讲)
第三章:常用集合 (3讲)
第四章:字符串 (1讲)
时长 16:47
第五章:函数 (2讲)
第六章:面向对象编程 (4讲)
第七章:编写好的错误处理 (2讲)
第八章:包和依赖管理 (2讲)
第九章:并发编程 (7讲)
第十章:典型并发任务 (5讲)
第十一章:测试 (3讲)
时长 11:48
时长 07:12
时长 06:15
第十二章:反射和Unsafe (3讲)
时长 08:18
时长 08:03
第十三章:常见架构模式的实现 (2讲)
第十四章:常见任务 (4讲)
时长 04:27
时长 05:14
第十五章:性能调优 (4讲)
第十六章:高可用性服务设计 (5讲)
Go 语言从入门到实战
登录|注册
留言
27
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 21 | 构建可复用的模块(包)
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | Go语言课程介绍
02 | 内容综述
03 | Go语言简介:历史背景、发展现状及语言特性
04 | 编写第一个Go程序
05 | 变量、常量以及与其他语言的差异
06 | 数据类型
07 | 运算符
08 | 条件和循环
09 | 数组和切片
10 | Map声明、元素访问及遍历
11 | Map与工厂模式,在Go语言中实现Set
12 | 字符串
13 | Go语言的函数
14 | 可变参数和defer
15 | 行为的定义和实现
16 | Go语言的相关接口
17 | 扩展与复用
18 | 不一样的接口类型,一样的多态
19 | 编写好的错误处理
20 | panic和recover
21 | 构建可复用的模块(包)
22 | 依赖管理
23 | 协程机制
24 | 共享内存并发机制
25 | CSP并发机制
26 | 多路选择和超时
27 | channel的关闭和广播
28 | 任务的取消
29 | Context与任务取消
30 | 只运行一次
31 | 仅需任意任务完成
32 | 所有任务完成
33 | 对象池
34 | sync.pool对象缓存
35 | 单元测试
36 | Benchmark
37 | BDD
38 | 反射编程
39 | 万能程序
40 | 不安全编程
41 | 实现pipe-filter framework
42 | 实现micro-kernel framework
43 | 内置JSON解析
44 | easyjson
45 | HTTP服务
46 | 构建RESTful服务
47 | 性能分析工具
48 | 性能调优示例
49 | 别让性能被锁住
50 | GC友好的代码
51 | 高效字符串连接
52 | 面向错误的设计
53 | 面向恢复的设计
54 | Chaos Engineering
55 | 结课测试&结束语
登录 后留言

全部留言(27)

  • 最新
  • 精选
代码南
大师,Go的模块什么时候补录一个视频呀,这个没有讲哦!

作者回复: 嗯,希望有机会和平台再次合作,为大家补录一些Go的更新内容。

2019-09-06
2
5
psoracle
golang中包由path与name两部分构建,导入时import的是package path,如'import "ch15/series"',其中ch15/series为$GOPATH/src/ch15/series目录,在使用时'series.Square(5)',其中的series为包名。 另外,从import可以给包取别名看到,其实包名叫什么没有啥意义,如: import x "ch15/series" func TestPackage(t *testing.T){ t.Log(x.Square(5)) } 其中 $GOPATH/src/ch15/series/yyy_test.go中package zzz的yyy与zzz叫啥都成。但是从代码可读性上与使用方便上,尽量:包的路径名与包名尽量保持一致,而且能表达这个包是做什么的,也就是zzz定义为series;至于yyy名称则尽量能体现出这个文件中都定义了一些什么功能。

作者回复: 赞。

2019-07-05
3
小杰
老师问下,我这代码看着都是正常的 package remote_package import ( cm "github.com/easierway/concurrent_map" "testing" ) func TestRemotePackage(t *testing.T) { m := cm.CreateConcurrentMap(99) m.Set(cm.StrKey("Key"), 10) t.Log(m.Get(cm.StrKey("key"))) } 但是控制台输出 remote_package_test.go:11: <nil> false 这是为什么呢?

作者回复: 你的两处“Key”大小写不同

2022-01-09
1
limix
同一个目录里的go代码的package必须一直,那么同一个包的目录可以是多个不同的目录吗?

作者回复: 通常是有多个不同的子目录,子目录中可以使用不同的包名

2021-07-18
psoracle
Atom每次打开go-plus都在更新库,从golang.org或github.com更新插件,一个是网络本来就不好,我在运行测试代码,Output总被"go get -u"占据,怎么能禁止它更新包? ![](http://wimgss.oss-cn-hangzhou.aliyuncs.com/2019-07-05-145406.png)

作者回复: 一般是你的go-plus的依赖一直没有完全安装成功,你可以在网络上找到golang.org的包更新解决方案。

2019-07-05
ezekiel
老师您好,是否有关于比包的讲解?

作者回复: 是不是“闭包”?你看看函数那节里有没有你想要的 😊

2019-04-27
南宫云遥子
有这个路径 root@ubuntu:/mnt/goProject/src/ch13# tree . ├── client │   └── package_test.go └── series └── series_file.go

作者回复: 这种情况,只要在GOPATH里加入/mnt/goProject就没有问题了

2019-04-16
南宫云遥子
日志copy错了,其实没有多src路径 ``` root@ubuntu:/mnt/goProjec/src/ch13/client# go test -v package_test.go # command-line-arguments package_test.go:7:5: cannot find package "ch13/series" in any of: /usr/local/go/src/ch13/series (from $GOROOT) /mnt/goProject/src/ch13/series (from $GOPATH) FAIL command-line-arguments [setup failed] root@ubuntu:/mnt/goProjec/src/ch13/client# go env |grep PATH GOPATH="/mnt/goProject" root@ubuntu:/mnt/goProjec/src/ch13/client# cat package_test.go |grep "ch13" "ch13/series" root@ubuntu:/mnt/goProjec/src/ch13/client# ```

作者回复: 有ch13/series这个路径吗?

2019-04-15
2
南宫云遥子
我用linux也是无法识别"ch13/series" GOPATH ``` GOPATH="/mnt/goProject/src" ``` 报错 ``` root@ubuntu:/mnt/goProjec/src/ch13/client# go test -v package_test.go # command-line-arguments package_test.go:5:5: cannot find package "ch13/series" in any of: /usr/local/go/src/ch13/series (from $GOROOT) /mnt/goProject/src/src/ch13/series (from $GOPATH) FAIL command-line-arguments [setup failed] ```

作者回复: 你看下路径是不是多了个src的问题

2019-04-14
2
刘楠
go get -u github.com/easierway/concurrent_map 要这样,不能带后缀
2019-03-16
1
15
收起评论