type Point struct {
x, y int
}
var arr [4]Point
如何将数组布置在内存中?
实际物体是否并排布置
[Point[x][y]][Point[x][y]][Point[x][y]][Point[x][y]]
或者数组是一个指针数组,对象存储在别处,比如Java?
[&Point0][&Point1][&Point2][&Point3]
堆中的某个地方:
...[Point0[x][y]] ... [Point1[x][y]] .... [Point3[x][y]] ... [Point2[x][y]]
此外,make()
将如何在内存中布置切片?
make([]Point, 10)
答案 0 :(得分:2)
4 Point
将在内存中连续,如第一个示例中所示。如果您希望它们成为指针,那么您需要[4]*Point
。
Point
切片会创建一个使用(指向)支持数组的切片,其中,Point
s将并排(并且[]*Point
将是一段指向Point
)的指针。
有关Go数据结构的内存布局的详细说明,请参阅http://research.swtch.com/godata。