Golang交替打印的几种实现方式
· ☕ 2 分钟 · ✍️ 卓
提供了Golang交替打印的几个思路: 使用Goroutine, sync包中的WaitGroup和Cond 使用unbuffered channe

Golang垃圾回收-三色算法概览
· ☕ 2 分钟 · ✍️ 卓
三色标记-清除算法(tricolor mark-and-sweep algorithm) 把heap中的对象, 用黑色, 灰色, 白色进行标记 黑色对象: 已经以其为root执行过可达性分析的对象 灰色

Golang踩坑总结-使用下标获取字符串的字符
· ☕ 1 分钟 · ✍️ 卓
问题表现 使用下标获取字符串的字符时, 可能得到奇怪的字符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 func main() { s := "hello" fmt.Printf("%c\n", s[1]) s = "你好" fmt.Printf("%c\n", s[1]) } //

Golang踩坑总结-循环中使用Goroutine中捕获参数
· ☕ 1 分钟 · ✍️ 卓
问题表现 goroutine中捕获的循环变量, 都为循环最后的值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 func main() { for i, v := range []string{"a", "b", "c", "d", "e"} { // goro

Golang踩坑总结-循环中使用闭包捕获参数
· ☕ 1 分钟 · ✍️ 卓
问题表现 闭包中捕获的循环变量, 都为循环最后的值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 func main() { // 保存函数闭包 var s []func() for i, v := range []string{"a", "b", "c", "d", "e"} {