当我将新的结构对象重新分配给现有变量时,地址不会改变。代码如下所示:
type Request struct {
Field string
}
func main(){
r := Request{Field: "a"}
fmt.Printf("%p\n", &r)
r = Request{Field: "b"}
fmt.Printf("%p\n", &r)
}
输出:
0xc0004040d0
0xc0004040d0
这就像在Feild没有分配新内存的情况下进行了修改。那么当重新分配发生时,Go 会做什么呢?
如果我想使用sync.pool,我可以像重置一样将obj放入池中r := Request{}吗?(我的意思是通过这个操作,struct obj 可以被重用,并且不会被 . 收集gc。)
慕森王
相关分类