摘要:
阅读全文
摘要:
Test 我们在日常的工作过程中,自测是不可缺少的,公司还会要求所有的公共方法必须要写单测,在别的语言中,我们如果想要写单测还需要使用到测试框架,但是Go语言中,直接支持测试,并且使用起来非常简单。 比如说我现在写了一个: // twoSum 给定数组,求两个之和的数组内地址 func twoSum 阅读全文
摘要:
goroutine 协程(Coroutine) Golang 在语言层面对并发编程进行了支持,使用了一种协程(goroutine)机制, 协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,但是又寄生于线程中,因此系统开销极小,可以有效的提高线程的任务并发性,而避免多线程的缺点。但是协程需要 阅读全文
摘要:
接口 接口是一个或者多个方法签名的集合,任何类型 只要实现一个集合的全部方法,就表示这个类型实现了这个接口,并且无需在类型上显式的添加接口声明。 接口命名一般以 er结尾 接口只有方法签名,没有实现 接口没有数据字段 可以在一个接口中嵌入其它接口 一个类型可以实现多个接口 空接口没有方法签名,意味着 阅读全文
摘要:
Struct struct(结构体)就是用户自己定义的类型,一个结构体对应现实中的一个类型,和Java中的Class类相似,但是没有Class类那么复杂,没有多态,继承,封装。只保留了最基础的特性:组合。组合也只是形成最基本的复合类型。 初始化 自定义一个User类型,并且对这个User类型进行初始 阅读全文
摘要:
Map map是一堆键值对的未排序集合,比如以身份证号作为唯一键来标识一个人的信息。 map是引用类型,键必须支持相等运算符(==,!=)类型,比如:int,string,float等内建类型,只含有内建类型的结构体可以作为key。值可以是任意类型,没有限制。 初始化 var m1 map[stri 阅读全文
摘要:
切片 切片并不是数组或者数组指针,切片只是对数组中连续片断的引用,这个片断可以是整个数组,也可以是由起始索引和终止索引标识的数组,所以切片是一个引用类型。 // 切片的数据结构 struct Slice{ byte* array; uintgo len; uintgo cap; } 切片是引用类型, 阅读全文
摘要:
数组 同一种类型的集合称之为数组,数组是一组已编号且长度固定的数据项序列,数组中可以是任意的相同类型,数组的长度必须是一个常量或常量表达式,数组的索引是从0开始,到len(Array) - 1 的长度,数组的长度必须在声明时就固定下来。在Go语言中,类型控制的是非常严格的,比如:[2]int 和 [ 阅读全文
摘要:
匿名函数 匿名函数就是一个没有名字的函数,当我们在一个函数内部重复调用一段代码, 并且这段代码不想被别的函数使用,我们就可以定义一个匿名函数,或者在一段代码需要并发的时候使用匿名函数。 例如: func main() { f := func() { fmt.Println("hello,world! 阅读全文
摘要:
递归 递归,说白了就是直接或者间接的调用自己的一种算法。它是把求解问题转化为规模较小的子问题,然后通过多次递归一直到可以得出结果的最小解,然后通过最小解逐层向上返回调用,最终得到整个问题的解。总之递归可以概括为一句话就是:“能进则进,不进则退”。 递归的三要素 确定递归函数的参数据和返回值 确定终止 阅读全文
摘要:
函数 函数是go语言最基本的单位,每一个程序都包含着很多函数,编写多个函数的主要目的是将一个需要很多行代码的复杂问题分解决为一系列简单的问题,通过解决简单的问题,最终解决这个复杂的问题。 “不要重造轮子”,相信你已经听过很多这样的话,这里的轮子指的就是代码中的 函数 或者 方法,一个好的程序一定非常 阅读全文