深入理解 Go String 转 []byte 的容量分配机制

引言 在 Go 语言中,string 和 []byte 之间的转换是非常常见的操作。但你是否注意到,当将一个 3 字节的字符串转为 []byte 时,得到的切片容量却是 32?这背后隐藏着 Go 运行时的内存分配策略。本文将通过汇编代码分析,深入探究这个有趣的现象,帮助你理解 Go 在底层是如何处理类型转换和内存分配的。 核心问题: 为什么 []byte("abc") 的容量是 32 而不是 3? string 转 []byte 的底层实现是什么? Go 运行时如何进行内存分配? ...

May 31, 2020 · 5 min · 863 words · fancive

[翻译] Go Interface 深度解析

本文翻译自 Ian Lance Taylor 的博客文章 Go interfaces,讲的是 interface 在底层到底长什么样——静态类型、动态类型,以及那个最容易把人绕晕的值拷贝行为。后半段补了一点 Russ Cox 对 itable 内部结构的说明。 ...

May 6, 2020 · 2 min · 305 words · fancive