版本: go version go1.13 darwin/amd64
在go源码runtime目录中找到gcTrigger结构体,就能看出大致调用的位置GC调用方式所在位置代码定时调用runtime/proc.go:forcegchelpe
本文是Go比较有名的一个坑,在以前面试的时候也被问过,为什么想起来写这个?
因为我们线上就真实出现过这个坑,写给不了解的人在使用 if err != nil 的时候提高警惕。
Go语言的interface{}在使用过程中有一个特别坑的特性,
panic源码解读
前言
本文是在go version go1.13.15 darwin/amd64上进行的
panic的作用panic能够改变程序的控制流,调用panic后会立刻停止执行当前函数的剩余代码,并在当前Goroutine中递归
在看本篇文章前我们需要了解阻塞的概念
在执行过程中暂停,以等待某个条件的触发 ,我们就称之为阻塞
在Go中我们make一个channel有两种方式,分别是有缓冲的和没缓冲的
缓冲channel 即 buffer channel 创建方式为
很多时候我们需要让main函数不退出,让它在后台一直执行,例如:func main() {for i := 0; i < 20; i++ { //启动20个协程处理消息队列中的消息c := consumer.New()go c.Start(
在命令行下直接运行:brew upgrade go
补充:mac下更新delve调试go语言
概述
delve 是golang调试程序。但如果版本不配套, mac下goland 调试,step over会不起作用,直接变成执行完毕或者到下一
目录0. 前序1. slice1.1 slice的创建1.2 数据结构1.3 扩容机制2. map2.1 map创建2.2 数据结构2.3 扩容机制3. channl3.1 数据结构3.2 过程详解0. 前序
slice,map,chann
目录1. interface{}初探2. eface3. iface4. 接口转化1. interface{}初探
Go是强类型语言,各个实例变量的类型信息正是存放在interface{}中的,Go中的反射也与其底层结构有关。
iface