考虑以下示例:
sliceA := make([]byte, 10)
sliceB := make([]byte, 10)
// sliceA and sliceB are referencing different memory,
// witch eventually may contain same data
sliceC := sliceA[:]
// sclieC references same memory as sliceA
sliceD := sliceA[1:2]; sliceE := sliceA[4:5]
// assert that sliceD and sliceE share same block of memory
有什么方法可以检查两个 slice 是否引用(或不引用)同一内存?
编辑
我要比较的 slice 可能未指向基础内存块的同一段。
最佳答案
类型为[] T的两个非nil实例a和b共享同一后备数组iff
&a[cap(a)-1] == &b[cap(b)-1]
请注意,可能有必要在测试之前将a和b slice 。
关于go - 如何查找两个 slice 是否引用了相同的内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16838794/