gpt4 book ai didi

go - 为什么使用 Go interface{} 作为参数,当我用字符串调用 func 时,它会强制转换一个 alloc/ns?

转载 作者:IT王子 更新时间:2023-10-29 00:42:34 26 4
gpt4 key购买 nike

我有一个以 interface{} 作为参数的 Go 函数。当我用字符串调用函数时,它会强制转换一个 alloc/ns。为什么?

   func foo(...interface{}) error {
....
}

func use() {
var str = "use it"
e := foo(str)
_ = e
}

最佳答案

在内部,一个接口(interface)变量是一个二字结构。第一个词是指向变量动态类型信息的指针。第二个单词将 (a) 包含变量的动态值(如果它适合一个单词),或者 (b) 包含一个指向内存的指针,如果它更大的话。

一个字符串变量比一个单词大,因为它保存了它的长度和指向底层字符数据的指针。因此,将字符串存储在接口(interface)变量中涉及分配一些内存来保存该值。

关于go - 为什么使用 Go interface{} 作为参数,当我用字符串调用 func 时,它会强制转换一个 alloc/ns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com