zoukankan      html  css  js  c++  java
  • 24_切片的使用

    切片的知识点:

    1、切片的底层是一个数组,但是切片传递是地址传递

    2、切片不是数据类型,而是一个数据结构

    3、slice通常写成[]T,其中元素的类型都是T;它看上去像没有长度的数组
    4、slice有三个属性:指针、长度和容量

    5、一个底层数组可以对应多个slice,这些slice可以引用数组的任意位置,彼此之间的元素还可以重叠

    6.切片的截取操作

    实例代码如下:

    
    
    package main
    
    
    import "fmt"
    
    
    func main() {
    	//[low:high:max]  len()=high-low  cap=max-low
    	a := []int{1, 2, 3, 4, 5}
    	fmt.Println("len(a):", len(a), "cap(a):", cap(a))
    	b := a[1:2:4]
    	fmt.Println("len(b):", len(b), "cap(b):", cap(b)) //len(b): 1 cap(b): 3
    
    
    	//[:high:max]
    	c := a[:2:3]
    	fmt.Println("len(c):", len(c), "cap(c):", cap(c))
    	fmt.Println(c[1]) //[1 2],容量是3,但是可以添加值,这个地址没有值
    	//fmt.Println(c[1])// index out of range
    
    
    	//[low::max]
    	//	d :=a[2::5]//middle index required in 3-index slice,及不能缺少中间参数
    	//	fmt.Println("len(d):", len(d), "cap(d):", cap(d))
    
    
    	//[low:]
    	d := a[2:]
    	fmt.Println("len(d):", len(d), "cap(d):", cap(d)) //len(d): 3 cap(d): 3
    
    
    	//[:high]  这时的cap是整个底层数组的大小
    	e := a[:2]
    	fmt.Println("len(e):", len(e), "cap(e):", cap(e)) //len(e): 2 cap(e): 5
    	e = append(e, 3)                                  //在e切片后面追加3
    
    
    	s1 := a[1:3] //s1: [2 3]
    	fmt.Println("s1:", s1)
    	s2 := s1[1:4] //s2: [3 4 5] 由此可以看出,切片都是操作的底层数组,不是一个部分切片
    	fmt.Println("s2:", s2)
    	s2[2] = 66 //把底层数组也改变了
    
    
    	fmt.Println("a:", a) //a: [1 2 3 4 66]
    }

    运行结果:
        

                        

    每天的价值就是不停息的前进!!!
  • 相关阅读:
    oracle用户和权限
    oracle中的索引
    oracle中的序列
    oracle中的视图
    oracle PL/SQL块
    oracle创建表案列
    半导体随机存储器
    IEEE754标准
    定点数的移位操作
    真值,原码,反码以及补码和移码总结
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11439799.html
Copyright © 2011-2022 走看看