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

21 | 构建可复用的模块(包)

蔡超
Mobvista技术副总裁兼首席架构师,前亚马逊(中国)首席软件架构师
全集8368
新人首单 ¥29.9 原价 ¥129
10
本节摘要
展开
登录 后留言

精选留言(18)

  • 刘楠
    go get -u github.com/easierway/concurrent_map
    要这样,不能带后缀
    2019-03-16
    1
    10
  • 南哥家
    大师,Go的模块什么时候补录一个视频呀,这个没有讲哦!

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

    2019-09-06
    1
    2
  • 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
    2
  • 行军伙夫
    我用的GoLand编辑器,设置了gopath,但是不知道为啥import只能用"../series",无法识别"ch15/series"
    2019-04-04
    2
    2
  • 刘楠
    $ go get -u github.com/easierway/concurrent_map.git
    package github.com/easierway/concurrent_map.git: invalid version control suffix in github.com/ path
    下载不了,
    2019-03-16
    1
    2
  • 幽弥狂
    can't load package: package ch15/client is not in GOROOT (/usr/local/Cellar/go/1.14.2_1/libexec/src/ch15/client)

    我不太明白,如果是 gopath 设置的问题那能理解为没设置,为啥报错 GOROOT ???
    2020-04-20
    2
    1
  • Gary
    package和文件中的init方法一般做哪些事情?
    2019-03-18
    2
    1
  • GoToPython
    go get太慢了,都是go mod管理了1.13已经默认开启,go mod比较费硬盘,其他都完美。
    2020-04-28
  • xj_zh
    要好好借鉴蔡老师的经验,查缺补漏。
    2020-03-21
  • 踢车牛
    我在终端的.bash_profile改了GOPATH。怎么还是没起重要呢
    2020-03-01
  • yuzhiteng
    Init 中如果是用fms.print为什么就阻断了
    2020-01-30
  • K战神
    [ERROR] Update failed for ch15/series: Cannot detect VCS
    [ERROR] Failed to do initial checkout of config: Cannot detect VCS


    有这种错误的给个1,vscode
    2019-08-26
  • 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
  • 当猪真快活
    老师您好,是否有关于比包的讲解?

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

    2019-04-27
  • 南宫云遥子
    其实我在上一个问题已经给出了GOPATH了
    ```
    root@ubuntu:/mnt/goProjec/src/ch13/client# go env |grep PATH
    GOPATH="/mnt/goProject"
    ```
    2019-04-19
  • 南宫云遥子
    有这个路径
    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
  • 南宫云遥子
    我用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
    1
收起评论
看过的人还看
Go语言核心36讲

郝林  《Go并发编程实战》作者,前轻松筹大数据负责人

55讲 | 26035 人已学习

新人首单 ¥19.9 原价 ¥99
数据结构与算法之美

王争  前Google工程师

80讲 | 87411 人已学习

新人首单 ¥29.9 原价 ¥129
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

49讲 | 56858 人已学习

新人首单 ¥29.9 原价 ¥129
趣谈网络协议

刘超  网易研究院云计算技术部首席架构师

51讲 | 45311 人已学习

新人首单 ¥19.9 原价 ¥99