我有一个Go接口函数,它以接口{}作为参数.当我用字符串调用函数时,它将转换一个alloc/ns.为什么?
func foo(...interface{}) error {
....
}
func use() {
var str = "use it"
e := foo(str)
_ = e
}
Run Code Online (Sandbox Code Playgroud)
在内部,接口变量是双字结构.第一个单词是指向有关变量动态类型的信息的指针.第二个单词将(a)包含变量的动态值(如果它适合单词),或(b)包含指向存储器的指针,如果它更大则保存动态值.
字符串变量大于单词,因为它包含它的长度和指向底层字符数据的指针.因此,在接口变量中存储字符串涉及分配一些内存来保存该值.
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |