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

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

May 31, 2020 · 5 min · fancive

[翻译] Go Interface 深度解析

引言 Interface 是 Go 语言最强大的特性之一,但同时也是最容易让人困惑的部分。本文翻译自 Ian Lance Taylor 的博客文章,深入探讨了 Go interface 的内部实现机制,帮助你理解 interface 的静态类型、动态类型以及值拷贝的工作原理。 核心要点: Interface 同时具有静态类型和动态类型 Interface 的值拷贝行为 Interface 的内部数据结构(itable) 指针接收者与值接收者的区别 原文链接:https://www.airs.com/blog/archives/281 ...

May 6, 2020 · 2 min · fancive