Go 数组比切片好在哪?

2021-09-17
阅读 4 分钟
3.9k
大家好,我是煎鱼。前段时间有播放一条快讯,就是 Go1.17 会正式支持切片(Slice)转换到数据(Array),不再需要用以前那种骚办法了,安全了许多。但是也有同学提出了新的疑惑,在 Go 语言中,数组其实是用的相对较少的,甚至会有同学认为在 Go 里可以把数组给去掉。数组相较切片到底有什么优势,我们又应该在什么场景...

Go 工程师必学:Go 大杀器之跟踪剖析 trace

2021-09-15
阅读 5 分钟
4.5k
‍‍‍‍‍‍‍‍‍前段时间分享了《Go 程序崩了?煎鱼教你用 PProf 工具来救火!》,但有时候单单使用 pprof 还不一定足够完整观查并解决问题,因为在真实的程序中还包含许多的隐藏动作,例如:

上帝视角看 “Go 项目标准布局” 之争

2021-09-13
阅读 3 分钟
3.5k
前段时间 Go 语言社区有一件事情引爆了热议,那就是 golang-standards/project-layout 项目的 “Go 项目的标准布局” 之争。

Go 程序崩了?煎鱼教你用 PProf 工具来救火!

2021-09-12
阅读 14 分钟
6.5k
这次分享《Go 语言编程之旅》中的性能分析大杀器 PProf,文章字数有 1w3+ 字,我想应该是目前业界比较全的 PProf 文章了,也欢迎大家买本 《Go 语言编程之旅》学习更多的 Go 语言进阶技巧和知识。

用 Go map 要注意这个细节,避免依赖他!

2021-09-12
阅读 5 分钟
4.6k
有的小伙伴没留意过 Go map 输出、遍历顺序,以为它是稳定的有序的,会在业务程序中直接依赖这个结果集顺序,结果栽了个大跟头,吃了线上 BUG。

Go1.17 新特性,优化抛出的错误堆栈

2021-09-01
阅读 2 分钟
3.7k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。平时在日常工程中,我们常常会用到异常恐慌(panic)的记录和追踪。最常见的就是,线上 panic 了之后,我们总想从中找到一些蛛丝马迹。我们很多人是看 panic 是看他的...

Go1.17 新特性,凭什么让程序提速 5~10%?

2021-09-01
阅读 2 分钟
6.7k
在 Go1.17 发布后,我们惊喜的发现 Go 语言他又又又优化了,编译器改进后产生了约 5% 的性能提升,也没有什么破坏性修改,保证了向前兼容。

Go 面试官:什么是协程,协程和线程的区别和联系?

2021-07-20
阅读 3 分钟
12.4k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。最近金三银四,是面试的季节。在我的 Go 读者交流群里出现了许多小伙伴在讨论自己面试过程中所遇到的一些 Go 面试题。今天的男主角,是工程师的必修技能,那就是 “什...

一个新细节,Go 1.17 将允许切片转换为数组指针!

2021-07-12
阅读 2 分钟
4.8k
在 Go 语言中,一个切片(slice)包含了对其支持数组的引用,无论这个数组是作为一个独立的变量存在于某个地方,还是仅仅是一个为支持分片而分配的匿名数组。

使用 Go defer 要小心这 2 个折腾人的雷区!

2021-07-09
阅读 5 分钟
2.1k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。在 Go 语言中 defer 是一个非常有意思的关键字特性。例子如下: {代码...} 输出结果是: {代码...} 在前几天我的读者群内有小伙伴讨论起了下面这个问题:简单来讲,问...

生产环境遇到一个 Go 问题,整组人都懵逼了...

2021-07-07
阅读 2 分钟
2.9k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。前段时间正在疯狂写代码的时候,突然有一个读者给我提了一个问题,让我有了一定的兴趣:我还是比较感兴趣的,因为是生产环境、有代码,且整组人都懵逼的问题。在征求...

经典面试题:你觉得 Go 在什么时候会抢占 P?

2021-06-24
阅读 5 分钟
3.7k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。前几天我们有聊到《单核 CPU,开两个 Goroutine,其中一个死循环,会怎么样?》的问题,我们在一个细节部分有提到:有新的小伙伴会产生更多的疑问,那就是在 Go 语言...

用 Go struct 不能犯的一个低级错误!

2021-06-17
阅读 4 分钟
3.9k
前段时间我分享了 《手撕 Go 面试官:Go 结构体是否可以比较,为什么?》的文章,把基本 Go struct 的比较依据研究了一番。这不,最近有一位读者,遇到了一个关于 struct 的新问题,不得解。

详解 Go 程序的启动流程,你知道 g0,m0 是什么吗?

2021-06-16
阅读 6 分钟
10.2k
这段程序的输出结果为 hello world.,就是这么的简单又直接。但这时候又不禁思考了起来,这个 hello world. 是怎么输出来,经历了什么过程。

跟面试官聊 Goroutine 泄露的 6 种方法,真刺激!

2021-06-11
阅读 5 分钟
12.2k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。前几天分享 Go 群友提问的文章时,有读者在朋友圈下提到,希望我能够针对 Goroutine 泄露这块进行讲解,他在面试的时候经常被问到。今天的男主角,就是 Go 语言的著名...

你知道 Go 结构体和结构体指针调用有什么区别吗?

2021-06-06
阅读 2 分钟
13.5k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。前几天在分享《Go 结构体是否可以比较,为什么?》时,有小伙伴提出了新的问题:虽然大家提问题的速度已经超出了本鱼写文章的速度...不过作为宠粉狂鱼,在此刻清明假...

Go 面试官:单核 CPU,开两个 Goroutine,其中一个死循环,会怎么样?

2021-06-04
阅读 3 分钟
4.8k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。最近金三银四,是面试的季节。在我的 Go 读者交流群里出现了许多小伙伴在讨论自己面试过程中所遇到的一些 Go 面试题。今天的主角,是 Go 面试的万能题 GMP 模型的延伸...

难受,生产 Go timer.After 内存泄露之痛!

2021-06-02
阅读 3 分钟
2.8k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。前几天分享了一篇 Go timer 源码解析的文章《难以驾驭的 Go timer,一文带你参透计时器的奥秘》。在评论区有小伙伴提到了经典的 timer.After 泄露问题,希望我能聊聊...

Go 面试官:Go 结构体是否可以比较,为什么?

2021-06-01
阅读 4 分钟
6.1k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。最近金三银四,是面试的季节。在我的 Go 读者交流群里出现了许多小伙伴在讨论自己面试过程中所遇到的一些 Go 面试题。今天的男主角,是 Go 工程师的必修技能,也是极...

Go 面试官:GMP 模型,为什么要有 P?

2021-05-31
阅读 3 分钟
6.8k
微信搜索【脑子进煎鱼了】关注这一只爆肝煎鱼。本文 GitHub github.com/eddycjy/blog 已收录,有我的系列文章、资料和开源 Go 图书。大家好,我是煎鱼。最近金三银四,是面试的季节。在我的 Go 读者交流群里出现了许多小伙伴在讨论自己面试过程中所遇到的一些 Go 面试题。今天的主角,是 Go 面试的万能题 GMP 模型的延伸...

Go 面试官:进程、线程都有 ID,为什么 Goroutine 没有 ID?

2021-05-30
阅读 4 分钟
9k
今天的主角,是大家在既有语言基础的情况下,学 Goroutine 时会容易纠结的一点。就是 “进程、线程都有 ID,为什么 Goroutine 没有 GoroutineID?”。

Go 语言中的一等公民:看似普通的函数,凭什么?

2021-05-12
阅读 3 分钟
3.5k
若有任何问题或建议,欢迎及时交流和碰撞。我的公众号是 【脑子进煎鱼了】,GitHub 地址:[链接] 。大家好,我是煎鱼。在 Go 语言中,一提函数,大家提的最多的就是 “Go 语言的函数是一等公民”。这个定义来的非常突然,我们先了解一下什么是一等公民。根据维基百科的一等公民(First-class citizen)的定义:In programm...

Go 面试题:Go interface 的一个 “坑” 及原理分析

2021-05-11
阅读 2 分钟
4.2k
若有任何问题或建议,欢迎及时交流和碰撞。我的公众号是 【脑子进煎鱼了】,GitHub 地址:[链接] 。大家好,我是煎鱼。前几天在读者交流群里看到一位小伙伴,针对 interface 的使用有了比较大的疑惑。无独有偶,我也在网上看到有小伙伴在 Go 面试的时候被问到了:今天特意分享出来让大家避开这个坑。例子一第一个例子,...

Go 群友提问:学习 defer 时很懵逼,这道不会做!

2021-05-08
阅读 2 分钟
2.3k
前几天在读者交流群里看到一位小伙伴,在向大家咨询 Go 相关的技术问题。疑问是:“各位大佬,我在学习 defer 遇到闭包的时候很懵逼,谁比较明白,能指点?”

Go 群友提问:Goroutine 数量控制在多少合适,会影响 GC 和调度?

2021-04-05
阅读 4 分钟
7.9k
若有任何问题或建议,欢迎及时交流和碰撞。我的公众号是 【脑子进煎鱼了】,GitHub 地址:[链接] 。大家好,我是煎鱼。前几天在读者交流群里看到一位小伙伴,发出了一个致命提问,那就是:“单机的 goroutine 数量控制在多少比较合适?”。也许你和群内小伙伴第一反应一样,会答复 “控制多少,我觉得没有定论”。紧接着延伸...

问个 Go 问题,字符串 len == 0 和 字符串== "" ,有啥区别?

2021-03-31
阅读 2 分钟
3.3k
若有任何问题或建议,欢迎及时交流和碰撞。我的公众号是 【脑子进煎鱼了】,GitHub 地址:[链接]。大家好,我是煎鱼。前几天在微信群看到几位大佬在讨论一个问题: ”字符串 len == 0 和 字符串 == "" ,有啥区别?“这是一个比较小的细节点,同时也勾起了我的好奇心,因此今天这篇文章就和大家一起研究一下他们两者有没有...

Go 面试题: new 和 make 是什么,差异在哪?

2021-03-31
阅读 2 分钟
3.2k
若有任何问题或建议,欢迎及时交流和碰撞。我的公众号是 【脑子进煎鱼了】,GitHub 地址:[链接]。大家好,我是煎鱼。在 Go 语言中,有两个比较雷同的内置函数,分别是 new 和 make 方法,其主要用途都是用于分配相应类型的内存空间。看上去 new 和 make 都是分配内存的,那他们有什么区别呢?这个细节点也成为了不少 Go...

Go1.16 新特性:Go mod 的后悔药,仅需这一招

2021-03-07
阅读 3 分钟
7.3k
若有任何问题或建议,欢迎及时交流和碰撞。我的公众号是 【脑子进煎鱼了】,GitHub 地址:[链接]。大家好,我是煎鱼。前几天 Go 官方正式发布了 1.16 版本。从这个版本起,环境变量 GO111MODULE 的默认值正式修改为 on。这也意味着 Go modules 将更进一步推进其业务覆盖面,有新老项目共存的小伙伴建议手动将 GO111MODUL...

Go1.16 新特性:一文快速上手 Go embed

2021-03-07
阅读 3 分钟
5.2k
在以前,很多从其他语言转过来 Go 语言的同学会问到,或是踩到一个坑。就是以为 Go 语言所打包的二进制文件中会包含配置文件的联同编译和打包。

Go1.16 新特性:详解内存管理机制的变更,你需要了解

2021-03-07
阅读 3 分钟
7.7k
在前面 Go1.16 特性介绍的文章中我们有提到,从 v1.16 起,Go 在 Linux 下的默认内存管理策略会从MADV_FREE 改回 MADV_DONTNEED 策略。