GO语言切片

// 切片也是一种数据结构,它和数组非常相似,因为他是围绕动态数组的概念设计的,可以按需自动改变大小,使用这种结构,可以更方便的管理和使用数据集合。
// 切片对象非常小,因为只有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量。
package main

import "fmt"

func main() {
    // make创建切片,make([]type, length)
    slice := make([]int, 5)
    fmt.Println(slice)

    // 指定值
    slice1 := []int{1, 2, 3, 4, 5}
    fmt.Println(slice1)

    // 指定固定索引的值
    slice2 := []int{3:9}
    fmt.Println(slice2)

    // nil切片
    var nilSlice []int
    fmt.Println(nilSlice)

    // 空切片
    emptySlice := []int{}
    fmt.Println(emptySlice)

    // 切片操作
    slice3 := slice1[1:3]
    fmt.Println(slice3)

    // append添加元素,原切片的容量足够时,不会创建新的切片,直接在原切片上修改
    // slice4和newSlice共用底层数组
    slice4 := []int{1, 2, 3, 4, 5}
    newSlice := slice4[1:3]
    newSlice = append(newSlice, 5)
    fmt.Println(newSlice, slice4)   // [2 3 5] [1 2 3 5 5]

    // 切片的底层数组,没有足够的容量时,就会新建一个底层数组,把原来数组的值复制到新底层数组里,再追加新值,这时候就不会影响原来的底层数组了
    slice5 := []int{1, 2, 3}
    slice6 := append(slice5, 6, 7, 8)
    fmt.Println(slice5, slice6)  //[1 2 3] [1 2 3 6 7 8]

    // 追加整个切片使用...
    slice7 := append(slice5, slice6...)
    fmt.Println(slice7)   // [1 2 3 1 2 3 6 7 8]
}

// 取值方法和数组一样,也是通过索引,超过长度会报错


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 切片 是一种数据结构,这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的,可以按需自动增长和...
    夜空中乄最亮的星阅读 397评论 0 0
  • // //Go语言切片 // /* // go语言切片是对数组的抽象 // Go 数组的长度不可改变,在特定场景中...
    JackieZhang阅读 863评论 0 0
  • 一、Go语言中切片类型出现的原因 切片是一种数据类型,这种数据类型便于使用和管理数据集合。创建一个100万个int...
    码墨阅读 1,849评论 0 1
  • 一、类型数组是值类型,将一个数组赋值给另一个数组时,传递的是一份拷贝。 切片是引用类型,切片包装的数组称为该切片的...
    Chole121阅读 1,216评论 0 7
  • 因为你在生活中,已经见过太多演技高超的人了。他们可能是路边的推销员、培训机构的老师、你的同事,甚至可能是你身...
    猫天枫阅读 210评论 0 0