22讲通关Go语言~完-18质量保证:Go语言如何通过测试保证质量?
18 质量保证:Go 语言如何通过测试保证质量?
从这节课开始,我会带你学习本专栏的第四模块:工程管理。现在项目的开发都不是一个人可以完成的,需要多人进行协作,那么在多人协作中如何保证代码的质量,你写的代码如何被其他人使用,如何优化代码的性能等, 就是第四模块的内容。
这一讲首先来学习 Go 语言的单元测试和基准测试。
单元测试
在开发完一个功能后,你可能会直接把代码合并到代码库,用...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-17SliceHeader:slice如何高效处理数据?
17 SliceHeader:slice 如何高效处理数据?
在[第 4 讲
集合类型:如何正确使用 array、slice 和 map?]中,你已经学习了 slice(切片),并且知道如何使用。这节课我会详细介绍 slice 的原理,带你学习它的底层设计。
数组
在讲 slice 的原理之前,我先来介绍一下数组。几乎所有的编...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-16非类型安全:让你既爱又恨的unsafe
16 非类型安全:让你既爱又恨的 unsafe
上节课我留了一个小作业,让你练习一下如何使用反射调用一个方法,下面我来进行讲解。
还是以 person 这个结构体类型为例。
我为它增加一个方法 Print,功能是打印一段文本,示例代码如下:
func (p person) Print(prefix string){
fmt.Printf("%s:Name is %s,Age ...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-15运行时反射:字符串和结构体之间如何转换?
15 运行时反射:字符串和结构体之间如何转换?
我们在开发中会接触很多字符串和结构体之间的转换,尤其是在调用 API 的时候,你需要把 API 返回的 JSON 字符串转换为 struct 结构体,便于操作。那么一个 JSON 字符串是如何转换为 struct 结构体的呢?这就需要用到反射的知识,这节课我会基于字符串和结构体之间的转换,一步步地为你揭开 Go 语言运行时反射的面纱。
反射...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-14内存分配:new还是make?什么情况下该用谁?
14 内存分配:new 还是 make?什么情况下该用谁?
程序的运行都需要内存,比如像变量的创建、函数的调用、数据的计算等。所以在需要内存的时候就要申请内存,进行内存分配。
在 C/C++ 这类语言中,内存是由开发者自己管理的,需要主动申请和释放,而在 Go 语言中则是由该语言自己管理的,开发者不用做太多干涉,只需要声明变量,Go 语言就会根据变量的类型自动分配相应的内存。
Go 语...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-13参数传递:值、引用及指针之间的区别?
13 参数传递:值、引用及指针之间的区别?
上节课我留了一个思考题,关于指向接口的指针的思考。
在[“第 6 讲
struct 和 interface:结构体与接口都实现了哪些功能?”]中,你已经知道了如何实现一个接口,并且也知道如果值接收者实现了接口,那么值的指针也就实现了该接口。
现在我们再一起来复习一下接口实现的知识,然...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-12指针详解:在什么情况下应该使用指针?
12 指针详解:在什么情况下应该使用指针?
这节课起我将带你学习本专栏的第三模块:深入理解 Go 语言。
这部分主要会为你讲解 Go 语言的高级特性,以及 Go 语言一些特性功能的底层原理。
通过这部分的学习,你不光可以更好地使用 Go 语言,还会更深入地理解 Go 语言,比如理解你所使用的 slice 底层是如何实现的等。
什么是指针
我们都知道程序运行时的数据是存放在内存中的,...
2015-01-01 15:20:27 |
22讲通关Go语言~完
22讲通关Go语言~完-11并发模式:Go语言中即学即用的高效并发模式
11 并发模式:Go 语言中即学即用的高效并发模式
上节课我为你讲解了如何通过 Context 更好地控制多个协程,课程最后的思考题是:如何通过 Context 实现日志跟踪?
要想跟踪一个用户的请求,必须有一个唯一的 ID 来标识这次请求调用了哪些函数、执行了哪些代码,然后通过这个唯一的 ID 把日志信息串联起来。这样就形成了一个日志轨迹,也就实现了用户的跟踪,于是思路就有了。
...
2015-01-01 15:20:27 |
22讲通关Go语言~完