Go语言核心36讲-通道的高级玩法首先来说说单向通道。我们在说“通道”的时候指的都是双向通道,即:既可以发也可以收的通道。 所谓单向通道就是,只能发不能收,或者只能收不能发的通道。一个通道是双向的,还是单向的是由它的类型字面量体现的。 还记得接收操作符<-吗?如果我们把它用在通道的类型字面量中,那么它代表的就不是“发送”或“接收”的动作了,而是表示通道的方向。比如: 2021-11-03 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-通道的基本操作作为 Go 语言最有特色的数据类型,通道(channel)完全可以与 goroutine(也可称为 go 程)并驾齐驱,共同代表 Go 语言独有的并发编程模式和编程哲学。 2021-11-01 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-字典的操作和约束至今为止,讲过的集合类的高级数据类型都属于针对单一元素的容器。 它们或用连续存储,或用互存指针的方式收纳元素,这里的每个元素都代表了一个从属某一类型的独立值。 今天要讲的字典(map)却不同,它能存储的不是单一值的集合,而是键值对的集合。 2021-10-29 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-container包中的那些容器Go 语言的链表实现在标准库的container/list代码包中。这个代码包中有两个公开的程序实体——List和Element,List 实现了一个双向链表(以下简称链表),而 Element 则代表了链表中元素的结构。 2021-10-28 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-数组和切片这次主要讨论 Go 语言的数组(array)类型和切片(slice)类型。 它们的共同点是都属于集合类的类型,并且,它们的值也都可以用来存储某一种类型的值(或者说元素)。 2021-10-27 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-程序实体的那些事儿(下)如果可重名变量的类型不同,那么就需要引起我们的特别关注了,它们之间可能会存在“屏蔽”的现象。必要时,我们需要严格地检查它们的类型,但是怎样检查呢? 2021-10-26 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-程序实体的那些事儿(中)一个代码块可以有若干个子代码块;但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块)。这种代码块的划分,也间接地决定了程序实体的作用域。我们今天就来看看它们之间的关系。 2021-10-25 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-库源码文件库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。 2021-10-22 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-程序实体的那些事儿(上)Go 语言中的程序实体包括变量、常量、函数、结构体和接口。 Go 语言是静态类型的编程语言,所以我们在声明变量或常量的时候,都需要指定它们的类型,或者给予足够的信息,这样才可以让 Go 语言能够推导出它们的类型。 2021-10-22 笔记 #笔记 #go #Go语言核心36讲
Go语言核心36讲-命令源码文件我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件。 2021-10-19 笔记 #笔记 #go #Go语言核心36讲
左耳听风-Go语言编程模式:Go Generation前言Go 语言的代码生成主要还是用来解决编程泛型的问题。泛型编程主要是解决这样一个问题:因为静态类型语言有类型,所以,相关的算法或是对数据处理的程序会因为类型不同而需要复制一份,这样会导致数据类型和算法功能耦合。 我之所以说泛型编程可以解决这样的问题,就是说,在写代码的时候,不用关心处理数据的类型,只需要关心相关的处理逻辑。 泛型编程是静态语言中非常非常重要的特征,如果没有泛型,我们就很难做到多态 2021-10-18 笔记 #笔记 #go #左耳听风
左耳听风-Go语言编程模式:Functional Options前言我们来讨论一下 Functional Options 这个编程模式。这是一个函数式编程的应用案例,编程技巧也很好,是目前 Go 语言中最流行的一种编程模式。 但是,在正式讨论这个模式之前,我们先来看看要解决什么样的问题。 2021-10-15 笔记 #笔记 #go #左耳听风