美文网首页
study_go_day4 slice

study_go_day4 slice

作者: 无风起个浪 | 来源:发表于2019-03-08 21:14 被阅读0次

package main

import "fmt"

//slice本身是没有数据,是对底层array的一个view。

//slice 底层实现 有三个值 ptr指向第一个值 len长度  cap代表整个arr长度从ptr到结束

//slice是可以向后扩展,不能向前扩展,s[i] 不可以超越len(s),向后扩展不可以超越底层数组cap(s)

func main() {

arr := [...]int{0,1,2,3,4,5,6,7}

s := arr[2:6]

s1 := arr[:6]

s2 := arr[2:]

s3 := arr[:]

fmt.Println(s,s1,s2,s3)

//reslice

  s = s[1:]

fmt.Printf("s = %v,len(s)=%d,cap(s)=%d\n",s,len(s),cap(s))

s = s[:4]

fmt.Printf("s = %v,len(s)=%d,cap(s)=%d\n",s,len(s),cap(s))

s4 := append(s,10)

s5 := append(s4,11)

s6 := append(s5,12)

fmt.Println("s4,s5,s6 = ",s4,s5,s6)

/*s5和s6底层不是arr 是view的一个新的array

添加元素时如果超越cap,系统从新分配更大的底层数组,并且拷贝原来数组元素

go语言有垃圾回收机制,原来数组有使用就在,没有使用、将会被回收

由于值传递的关系,必须接收append的返回值

*/

  fmt.Println("arr = ",arr)

var d []int//zero vlaue for slice is nil s == nil

  for i :=0;i <100 ;i++  {

printSlice(d)

d = append(d,2 * i +1)

}

fmt.Println(d)

}

func printSlice(s []int)  {

fmt.Printf("len(s)=%d,cap(s)=%d\n",len(s),cap(s))

}

相关文章

  • study_go_day4 slice

    package main import "fmt" //slice本身是没有数据,是对底层array的一个view...

  • go 数组和切片slice那些事儿

    目录 数组数组概念数组的初始化 切片slice概念slice创建slice追加slice拼接问题slice作为函数...

  • golang slice学习

    1. slice的结构 slice是值类型 slice类型声明后类似于:var arr slice 而非 var ...

  • Zeroc Ice 入门(二) slice语言(1)

    Slice 语言定义 在这里,我们提供Slice语言。 Slice(Specification Language ...

  • ken

    001 slice的切片隐藏数据问题 当你重新划分一个slice时,新的slice将引用原有slice的数组。如果...

  • JavaScript中slice()、splice()、spli

    slice()和splice()都是数组截取方法(字符串中也有slice()方法);1、a:slice(start...

  • 4-数据类型内存结构-slice

    5. slice slice变量有三部分组成1-数组地址2-slice长度3-slice容量 1、使用runtim...

  • Go slice那些事

    今晚闲来无事,总结一下Go的slice slice是什么slice在Go中的原型?slice类似数组,是一种定长的...

  • slice 和substring,substr

    1. slice 定义slice() 方法可从已有的数组中返回选定的元素。 语法arrayObject.slice...

  • JS能力测评经典题2

    不考虑算法复杂度,用递归做: slice 参数 : slice(start,end); slice 方法,在str...

网友评论

      本文标题:study_go_day4 slice

      本文链接:https://www.haomeiwen.com/subject/hfwdpqtx.html