0、开篇词:跟着学,你也能成为Go语言高手

你好,我是郝林。今天想跟你聊聊我和Go语言的故事。 Go语言是由Google出品的一门通用型计算机编程语言。作为在近年来快速崛起的编程语言,Go已经成功跻身主流编程语言的行列。 它的种种亮点都受到了广大编程爱好者的追捧。特别是一些对团队协作有较高要求...

Go语言核心36讲

1、工作区和GOPATH

这门课中Go语言的代码比较多,建议你配合文章收听音频。 你好,我是郝林。从今天开始,我将和你一起梳理Go语言的整个知识体系。 在过去的几年里,我与广大爱好者一起见证了Go语言的崛起。 从Go 1.5版本的自举(即用Go语言编写程序来实现Go语言自...

Go语言核心36讲

2、命令源码文件

我们已经知道,环境变量GOPATH指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件。 这里的源码文件又分为三种,即:命令源码文件、库源码文件和测试源码文件,它们都有着不同的用途和编写规则。( 我在[“预习篇”的基础知识图]...

Go语言核心36讲

3、库源码文件

你已经使用过Go语言编写了小命令(或者说微型程序)吗? 当你在编写“Hello, world”的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感。如果你对这一点点并不满足,别着急,跟着学,我肯定你也可以写出很厉害的程...

Go语言核心36讲

4、程序实体的那些事儿(上)

我已经为你打开了Go语言编程之门,并向你展示了“程序从初建到拆分,再到模块化”的基本演化路径。 一个编程老手让程序完成基本演化,可能也就需要几十分钟甚至十几分钟,因为他们一开始就会把车开到模块化编程的道路上。我相信,等你真正理解了这个过程之后,也会驾...

Go语言核心36讲

5、程序实体的那些事儿(中)

在前文中,我解释过代码块的含义。Go语言的代码块是一层套一层的,就像大圆套小圆。 一个代码块可以有若干个子代码块;但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块)。 这种代码块的划分,也间接地决定了程序实体的作用域...

Go语言核心36讲

6、程序实体的那些事儿 (下)

在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论。 还记得吗?最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关注了,它们之间可能会存在“屏蔽”的现象。 必要时,我们需要严格地检查它们的类型,但是怎样...

Go语言核心36讲

7、数组和切片

从本篇文章开始,我们正式进入了模块2的学习。在这之前,我们已经聊了很多的Go语言和编程方面的基础知识,相信你已经对Go语言的开发环境配置、常用源码文件写法,以及程序实体(尤其是变量)及其相关的各种概念和编程技巧(比如类型推断、变量重声明、可重名变量、...

Go语言核心36讲

8、container包中的那些容器

我们在上次讨论了数组和切片,当我们提到数组的时候,往往会想起链表。那么Go语言的链表是什么样的呢? Go语言的链表实现在标准库的container/list代码包中。这个代码包中有两个公开的程序实体——List和Element,List实现了一个双向...

Go语言核心36讲

9、字典的操作和约束

至今为止,我们讲过的集合类的高级数据类型都属于针对单一元素的容器。 它们或用连续存储,或用互存指针的方式收纳元素,这里的每个元素都代表了一个从属某一类型的独立值。 我们今天要讲的字典(map)却不同,它能存储的不是单一值的集合,而是键值对的集合。 ...

Go语言核心36讲
1236