考虑以下示例:

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/

10-12 15:30