Go Context
Context 也称为上下文,主要用于并发中对多个 goroutine 的控制,也可作为全局数据进行传递的载体,按照golang 的编程实践,一般用作函数的第一个参数。
Context 也称为上下文,主要用于并发中对多个 goroutine 的控制,也可作为全局数据进行传递的载体,按照golang 的编程实践,一般用作函数的第一个参数。
channel 是Go语言中很重要的一种数据结构,他主要用于多个协程之间进行通信。其设计是同步的,在使用的时候并不需要加锁,由于channel的存在,大大降低了go 并发编写的难度。
最近在看 zap 相关的源码,里面用到了很多的 sync.Pool 来优化内存使用,于是花了点时间研究了下。
sync.Pool
是一组可以单独保存和检索的临时对象,之所以称其保存的是临时对象是因为在下一次 GC 的时候,池中对象会被清理,且被清理时不会得到任何通知,因此池中不适合存放数据库连接等持久对象。sync.Pool
的主要用途是存储已分配内存但却不再使用的对象,以供后续重用此对象,减少内存分配产生的碎片垃圾回收,提升性能。
套用维基百科的解释来说,反射就是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。Go语言和很多语言一样,支持反射操作,接下来就一起学习下,反射在Go语言中是怎么使用的。
logrus是Go语言编写的结构化日志工具,拥有丰富的日志API,支持自定义格式输出同时也支持hook操作,是目前比较流行的Go语言日志记录工具。
本文是长期维护的Go相关的笔试面试题合集