zoukankan      html  css  js  c++  java
  • 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尽量大一点
    
  • 相关阅读:
    python初体验-函数(1)
    python初体验-数值类型
    python初体验-常见错误类型
    动态规划专题——passage_1
    七夕——ORMAX(线段树)
    七夕——永远在一起(一维dp)
    动态规划4.4——背包问题
    动态规划4.3——最长公共子串问题
    动态规划4.2——子序列问题
    动态规划4.1——基础动态规划问题
  • 原文地址:https://www.cnblogs.com/kylingx/p/13281482.html
Copyright © 2011-2022 走看看