Go语言核心36讲
郝林
《Go并发编程实战》作者,前轻松筹大数据负责人
立即订阅
24139 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
开篇词+学习路线 (3讲)
开篇词 | 跟着学,你也能成为Go语言高手
免费
预习篇 | 写给0基础入门的Go语言学习者
50 | 学习专栏的正确姿势
模块一:Go语言基础知识 (6讲)
01 | 工作区和GOPATH
02 | 命令源码文件
03 | 库源码文件
04 | 程序实体的那些事儿(上)
05 | 程序实体的那些事儿(中)
06 | 程序实体的那些事儿 (下)
模块二:Go语言进阶技术 (16讲)
07 | 数组和切片
08 | container包中的那些容器
09 | 字典的操作和约束
10 | 通道的基本操作
11 | 通道的高级玩法
12 | 使用函数的正确姿势
13 | 结构体及其方法的使用法门
14 | 接口类型的合理运用
15 | 关于指针的有限操作
16 | go语句及其执行规则(上)
17 | go语句及其执行规则(下)
18 | if语句、for语句和switch语句
19 | 错误处理(上)
20 | 错误处理 (下)
21 | panic函数、recover函数以及defer语句 (上)
22 | panic函数、recover函数以及defer语句(下)
模块三:Go语言实战与应用 (27讲)
23 | 测试的基本规则和流程 (上)
24 | 测试的基本规则和流程(下)
25 | 更多的测试手法
26 | sync.Mutex与sync.RWMutex
27 | 条件变量sync.Cond (上)
28 | 条件变量sync.Cond (下)
29 | 原子操作(上)
30 | 原子操作(下)
31 | sync.WaitGroup和sync.Once
32 | context.Context类型
33 | 临时对象池sync.Pool
34 | 并发安全字典sync.Map (上)
35 | 并发安全字典sync.Map (下)
36 | unicode与字符编码
37 | strings包与字符串操作
38 | bytes包与字节串操作(上)
39 | bytes包与字节串操作(下)
40 | io包中的接口和工具 (上)
41 | io包中的接口和工具 (下)
42 | bufio包中的数据类型 (上)
43 | bufio包中的数据类型(下)
44 | 使用os包中的API (上)
45 | 使用os包中的API (下)
46 | 访问网络服务
47 | 基于HTTP协议的网络服务
48 | 程序性能分析基础(上)
49 | 程序性能分析基础(下)
尾声与思考题答案 (2讲)
尾声 | 愿你披荆斩棘,所向无敌
新年彩蛋 | 完整版思考题答案
Go语言核心36讲
登录|注册

01 | 工作区和GOPATH

郝林 2018-08-10

【Go 语言代码较多,建议配合文章收听音频。】

你好,我是郝林。从今天开始,我将和你一起梳理 Go 语言的整个知识体系。
在过去的几年里,我与广大爱好者一起见证了 Go 语言的崛起。
从 Go 1.5 版本的自举(即用 Go 语言编写程序来实现 Go 语言自身),到 Go 1.7 版本的极速 GC(也称垃圾回收器),再到 2018 年 2 月发布的 Go 1.10 版本对其自带工具的全面升级,以及可预见的后续版本关键特性(比如用来做程序依赖管理的go mod命令),这一切都令我们欢欣鼓舞。Go 语言在一步步走向辉煌的同时,显然已经成为软件工程师们最喜爱的编程语言之一。
我开办这个专栏的主要目的,是要与你一起探索 Go 语言的奥秘,并帮助你在学习和实践的过程中获取更多。
我假设本专栏的读者已经具备了一定的计算机基础,比如,你要知道操作系统是什么、环境变量怎么设置、怎样正确使用命令行,等等。
当然了,如果你已经有了编程经验,尤其是一点点 Go 语言编程经验,那就更好了,毕竟我想教给你的,都是 Go 语言中非常核心的技术。
如果你对 Go 语言中最基本的概念和语法还不够了解,那么可能需要在学习本专栏的过程中去查阅Go 语言规范文档,也可以把预习篇的基础知识图拿出来好好研究一下。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Go语言核心36讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(116)

  • 郝林 置顶
    有很多读写问归档文件是什么意思。归档文件在Linux下就是扩展名是.a的文件,也就是archive文件。写过C程序的朋友都知道,这是程序编译后生成的静态库文件。
    2018-08-10
    119
  • suke 置顶
    就三个环境变量,讲的这么费劲,随便搜一篇都比这文章有质量,既然收费了,能不能对自己的文章负责一些,真水
    2018-11-27
    9
    92
  • 与狼共舞 置顶
    纯技术类文章 ,建议多用图。

    作者回复: 你好,考虑到用图的话,播音员会很难描述。

    2018-08-12
    1
    36
  • 小巨小巨 置顶
    什么是归档文件,归档文件里都是什么?有什么作用。

    作者回复: 请看我置顶的留言。

    2018-08-10
    19
  • Geek_1ed70f 置顶
    下午上班时间随便读了一下,感觉有点讲的太散,只吸收了20%,晚上专门花了时间精读几遍 吸收了100%后真的干货满满,以前不懂得原理都能知道了 这是网上博客不会有的工匠级解说
    2019-01-27
    14
  • 第五季节 置顶
    工作区是指: 放go的源码目录。
    gopath是指:指向工作区的路径。

    归档文件: 相当于java的jar包。下载到本地私服


    不知道对不对。纯属个人观点。

    作者回复: 前两个对,归档文件在Linux下就是.a文件,也就是archive文件,是程序编译成功后生成的静态库文件。这跟Java的jar包还不太一样,jar包相当于动态链接库了。

    2018-08-10
    9
  • 千年孤独 置顶
    如果在面试中让老师来回答“设置'GOPATH有什么意义?”这个问题,除去典型回答

    老师会如何简要明了回答这个问题?

    作者回复: 可以说,为了集中组织代码,以及代码互相引用。当然了,这么说后面试官可能还会让你具体解答。

    2018-08-10
    6
  • 江山如画 置顶
    对于初学者第一次看确实有些难懂,但是多看几遍后就会发现其实干货满满,我读了好几遍,接触golang也快一年了,但是很多知识点是第一次接触到,感谢郝林老师!

    作者回复: 对你有帮助就好。

    2018-08-14
    5
  • xyang 置顶
    go语言适合做什么业务,能概述性的罗列讲述下吗

    作者回复: 你好,我会在后边另写文章介绍。

    2018-08-11
    5
  • Harry 置顶
    一脸懵逼,并不知道归档文件是啥😄

    作者回复: 请看我置顶的留言。

    2018-08-10
    1
    5
  • 许明 置顶
    ide 我觉得vscode就很好用了,我现在是vscode + glide

    作者回复: 嗯,我也用这种组合。

    2018-08-10
    4
  • 白宇 置顶
    请教一下,如何解决下载第三方包失败情况

    作者回复: 你好,这属于是网络问题。

    2018-08-11
    3
  • jians 置顶
    看完再结合测试后的疑问:
    在不同项目src中有同名包时,go build, install只会执行gopath中最早发现包的工作区,哪如何编译后面其他工作区中的同名包呢?

    作者回复: 这就需要自己去放置了,或者临时把前面的工作区从gopath中去掉。

    2018-08-10
    2
  • Diviner. 置顶
    求解释什么叫归档文件

    作者回复: 请置顶的留言。

    2018-08-10
    2
  • 第五季节 置顶
    gopath 的设计类似java 。
    具体的用途是执行命令要用 例如:go run、go install、go get等。
    允许设置多个路径。
    在idea里面的多个project或工具组建都并列放在gopath的src下面。
    例如:go install myProject1
                go install myProject2
    所以老师说的这个归档文件。可以理解成工作空间吗?
    至于老师说的两个问题。
    1:按照代码的执行顺序 从上往下 每个引入的初始化。
    2:引入一下试试就知道了。

    作者回复: 归档文件的解释请看置顶的留言。

    2018-08-10
    2
  • 有风的林子 置顶
    目前还没用到GOPATH包含多个工作区,不知多个目录间的分隔符是什么?空格、冒号、还是分号?如果作者顺便说一下就好了,至少增加一个知识点。😁

    作者回复: 你好,这根据具体的操作系统而定。

    2018-08-12
    1
    1
  • 我不会算法 置顶
    归档文件,可以理解为程序的动态链接库文件吗?

    作者回复: 相当于静态链接文件。

    2018-08-12
  • 有风的林子
    说实话,这开篇的介绍不是太清晰,起步就有些乱,好像写作者没太重视。个人猜测😂

    package是一个重要的关键词,不应当直接翻译成代码包,即便它们是在正文里。可能不译更好,也更准确清晰。

    个人觉得首先应当把工作区的3个基础目录列出来:bin,pkg,src。然后基于此就比较好讲了。

    另外,逻辑上import的路径并不特定表达实际文件系统的路径,它只是一个标识,目前来说对应到src之下的本地文件系统。

    pkg下的*.a直接说成库文件就很清楚了,然后大家就好顺序思考下去,不会被概念疑问阻塞。

    所谓的命令源码文件,如果补充说一下“即包含 main() 入口函数的源码文件”,可能更清楚。

    不好意思,提了不少问题。主要是因为太喜欢go了。

    对于初学者,或许《The Go Programming Language》是最经典的,它也是go语言的发明者参与写的,中文被译成了《Go语言圣经》。

    期待作者后续对go的深度剖析和分享,谢谢!
    2018-08-12
    181
  • 咖啡色的羊驼
    对于作者的两个问题。三个纬度延伸总结回答下:

    1.总执行顺序的角度
    引入的包 -> 当前包的变量常量 -> init()[多个同一包则按照顺序执行] -> main函数

    2.依赖包执行顺序
    被依赖的总是优先执行初始化,一个包只会被初始化一次。
    a引入b,b引入c,则执行顺序c -> b -> a

    3.单个包执行顺序的角度
    总的前提:按照包中源文件名的字典顺序来排序执行。
    当前包排序后的变量常量 -> 排序后的init()
    2018-08-10
    16
  • Bob.Chen
    请问对于之前不太了解go的同学,是否有推荐的入门书可以和专栏配合着看?
    2018-08-10
    15
收起评论
99+
返回
顶部