使用切片作为共享内存可以吗?

Is it ok to use slices as shared memory?

在这样的结构中使用切片是否可以:

type buffer struct {
    values []int
    mutex sync.RWMutex
}

我问是因为当我们附加到切片时,我们有可能将切片复制到内存中的新位置。

在大多数 Go 编程中,人们会在不考虑性能的情况下分配回切片,以防 append returns 新内存,因为切片是参考值。

b.values = append(b.values, i)

type buffer struct {
    values []int
    mutex sync.RWMutex
}

func (b *buffer) Append(i int) {
    b.mutex.Lock()
    b.values = append(b.values, i)
    b.mutex.Unlock()
}