有什么办法可以在 Go 中保持强引用吗?
鉴于以下令人费解的代码:
package main
import (
"fmt"
)
func main() {
slice := make([]int, 5)
slice[3] = 25 // whatever index between 0 and 4 included I don't care
slicesArray := make([]*[]int, 2)
slicesArray[0] = &slice
fmt.Println((*(slicesArray[0]))[3])
slice = nil
fmt.Println((*(slicesArray[0]))[3])
}
当然,这程序崩溃,因为一旦设定切片到nil存储区为脏的垃圾收集器的标记。
但是有没有办法告诉 Go 我的切片指针切片应该保持对这些切片的强引用?此外,保持对切片的引用而不是将 slicesArray 声明为是否有任何内存使用增益[][]int?是否有任何文档明确说明这应该如何工作?
哈士奇WWW
相关分类