Home > Article > Backend Development > For Go slicing, what is the difference between a slice and a full re-slicing of a slice?
php editor Xinyi In the Go language, slicing is a dynamic array that can be dynamically expanded as needed. The difference between a full reslicing of a slice and a slice is that a full reslicing creates a new slice that can have a different capacity and length than the original slice. The assignment operation between slices only copies the reference of the original slice to the new slice. The new slice shares the storage structure of the underlying array with the original slice. Therefore, when modifications are made to the new slice, the original slice will also be affected. This is an important difference between slicing and a complete re-slicing of a slice.
Is there a difference between slices and full slices?
Given a slice s:= make([]byte, 4, 4)
,
Is there a difference between copy(s[:], "data")
and copy(s, "data")
?
Will these two lines of code output different results?
Slices in Go have 3 properties:
s
and s[:]
are identical with respect to all of the above properties.
Go doesn't actually define the ==
operation for slices, but s
and s[:]
are the same in the sense that all measurable properties are equal.
copy
The function only focuses on the first 2 properties, which are the same between s
and s[:]
.
The above is the detailed content of For Go slicing, what is the difference between a slice and a full re-slicing of a slice?. For more information, please follow other related articles on the PHP Chinese website!