• go-slice


    #demo1:
    func main() {
    	var a = [3]int{1, 2, 3}
    	var b = []int{1, 2, 3}
    	fmt.Println(a, b)               //[1 2 3] [1 2 3]
    	fmt.Printf("a:%T b:%T
    ", a, b) // a:[3]int b:[]int
    	var c []int
    	c = a[0:1]          //左包含,右不包含
    	fmt.Println(c)      // [1]
    	fmt.Println(len(c)) //1  切片的长度-元素的数量
    	fmt.Println(cap(c)) //3  容量-底层数组最大能放多少元素
    }
    
    #demo2:
    func main() {
    	var a = []int{}
    	fmt.Printf("a:%v len:%d cap:%d ptr:%p
    ", a, len(a), cap(a), a)
    	a = append(a, 1)
    	fmt.Printf("a:%v len:%d cap:%d ptr:%p
    ", a, len(a), cap(a), a)
    }
    
    #demo3:
    切片三要素:地址&、长度len、容量cap
    切片支持自动扩容,扩容策略:每一次都是上一次的2倍
    a=append(a,1) 内置函数追加元素
    切片是引用类型
    func main() {
    	a := []int{1, 2, 3}
    	b := a //直接赋值
    	// var c []int //没有申请内存
    	// c = make([]int, 3, 3)
    	var c = []int{0, 0, 0}
    	copy(c, a)
    	b[0] = 10
    	fmt.Println(a) // [10 2 3]
    	fmt.Println(b) // [10 2 3]
    	fmt.Println(c) // [1 2 3]
    }
    
    #demo4:
    删除切片元素
    func main() {
    	a := []string{"sh", "bj", "gz"}
    	a = append(a[:1], a[2:]...) //使用...取出元素,追加至切片中
    	fmt.Println(a)
    }
    
    #得到切片的三种方式
    直接声明a:=[]int{1,2,3} len-3 cap-3
    基于数组得到切片m:=[5]int b:=m[:] len-3 cap-5
    基于切片得到切片b:=a[:2] ken-2 cap-3
    
    #使用make初始化切片
    make用于给引用类型申请内存空间
    切片必须初始化或者使用append才能使用
    var s []int
    s=make([]int,len,cap)
    初始化时cap尽量大一点
    
  • 相关阅读:
    struct
    python Hbase Thrift pycharm 及引入包
    python 性能鸡汤
    hbase 0.96 单机伪分布式配置文件及遇到的问题 find命令
    ubuntu下配置protobuf
    hadoop 2.2.0 eclipse 插件编译 及相关eclipse配置图解
    hadoop2.2.0 单机伪分布式(含64位hadoop编译) 及 eclipse hadoop开发环境搭建
    install ubuntu
    ubuntu wubi安装注意事项
    HBase eclipse开发环境搭建
  • 原文地址:https://www.cnblogs.com/kylingx/p/13281482.html
Copyright © 2020-2023  润新知