当前位置:网站首页>The usage of slice and the difference between slice and array
The usage of slice and the difference between slice and array
2022-04-23 19:21:00 【Handsome that handsome】
slice yes go A linguistic feature of , It's kind of like cpp Of vector, Variable length , Can expand space . Today I read it in detail , Make a summary .
slice It's essentially an interval , The prototype is []T, The general implementation is as follows :
type slice struct {
first *T
len int
cap int
}
What you can see is a pointer to an array , So it's changing slice Will change the value of the array .
The usage difference between and array is not too big .
- Array based creation :
var myArrary [3]int = [3]int{
1,2,3}
var mySlice []int = myArray[:2] //[first:last] The way , Make up when you are short 0
- Create directly :
mySlice = make([]int, 5)// Created a 5 The initial value is 0 The section of
mySlice = make([]int, 5, 10)// Created a 5, Capacity of 10 The section of
- function :
len() Returns the number of elements
cap() Returns the size of the container
append() New elements
mySlice = append(mySlice, 1, 2, 3) // The parameter type of the latter is actually an indefinite parameter
mySlice2 = []int{
7, 8, 9}
mySlice = append(mySlice, mySlice2...) Join in ... It means that after breaking up, it is passed into
- copy() Deep copy slice
slice1 := []int{
1, 2, 3, 4, 5}
slice2 := []int{
1, 2, 3}
copy(slice2, slice1)//copy slice Before 3 Elements to slice2
slice2 = slice1 // Will copy a reference to slice2
- Different from array
func arrayModify(array [5]int) {
newArray := array
newArray[0] = 88
}
func sliceModify(slice []int) {
newSlice := slice
newSlice[0] = 88
}
func main() {
array := [5]int{
1, 2, 3, 4, 5}
slice := []int{
1, 2, 3, 4, 5}
arrayModify(array)
sliceModify(slice)
fmt.Println(array)
fmt.Println(slice)
}
// [1 2 3 4 5]
// [88 2 3 4 5]
What you can see is that the array passes values , Does not change the value of the element , This and c/cpp Different , And though slice Value semantics , But it's itself a pointer type , So it changes the value , But it doesn't mean slice The reference , This needs attention . The problems caused by value semantics will be discussed in detail later .
版权声明
本文为[Handsome that handsome]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204210557451036.html
边栏推荐
- JS calculation time difference
- SSDB foundation 2
- openlayers 5.0 离散聚合点
- SSDB foundation 3
- 开关电源设计分享及电源设计技巧图解
- Translation of audio signal processing and coding: Preface
- 2022.04.23 (lc_763_divided into letter interval)
- Class loading process of JVM
- On the forced conversion of C language pointer
- The difference between ordinary inner class and static inner class
猜你喜欢
命令-sudo
Application of DCT transform
5 minutes to achieve wechat cloud applet payment function (including source code)
redis优化系列(三)解决主从配置后的常见问题
2021-2022-2 ACM training team weekly Programming Competition (8) problem solution
OpenHarmony开源开发者成长计划,寻找改变世界的开源新生力!
Client interns of a large factory share their experience face to face
[transfer] summary of new features of js-es6 (one picture)
An algorithm problem was encountered during the interview_ Find the mirrored word pairs in the dictionary
Esp01s with Arduino development environment
随机推荐
Using oes texture + glsurfaceview + JNI to realize player picture processing based on OpenGL es
Some records used by VS2010
ArcGIS JS API dojoconfig configuration
Some speculation about the decline of adults' language learning ability
Quick start to static class variables
SSDB foundation 1
点云数据集常用处理
An 8266 crash
Tencent cloud GPU best practices - remote development training using jupyter pycharm
Partage de la conception de l'alimentation électrique de commutation et illustration des compétences en conception de l'alimentation électrique
Using 8266 as serial port debugging tool
Audio signal processing and coding - 2.5.3 the discrete cosine transform
Intuitive understanding of the essence of two-dimensional rotation
Openharmony open source developer growth plan, looking for new open source forces that change the world!
开关电源设计分享及电源设计技巧图解
MySQL syntax collation (4)
Modify the font size of hint in editext
Data analysis learning directory
Parsing headless jsonarray arrays
Codeworks round 783 (Div. 2) d problem solution