zoukankan      html  css  js  c++  java
  • golang切片

    
    func test5(){
    	//切片
    	// 原始切片data:=make([]string, 5, k)
    	//newSlice = data[i:j]的
    	// 长度=j-i,  容量=k-i
    	data := []string{"a", "b", "c", "d", "e"}
    	newsLice := data[2:4]
    	fmt.Println(len(newsLice), cap(newsLice))
    	fmt.Printf("%+v", newsLice)
    }
    
    func test6(){
    	//切片的第三个索引值用来限制容量
    	data := []string{"a", "b", "c", "d", "e"}
    	newSlice := data[1:2:5]
    
    	newSlice = append(newSlice, "f")
    	fmt.Println(data) // newSlice := data[1:2:2]
    	// 如果不限制newSlice的长度和容量相等,append的时候
    	// 会改变底层数据的值,导致data变为:[a b f d e]
    	// newSlice len:1, cap:4, [b]
    	fmt.Printf("newSlice len:%d, cap:%d, %+v", len(newSlice), cap(newSlice), newSlice)
    }
    
    func test7(){
    	a:=[]int{1,2}
    	b:=[]int{3,4}
    	a=append(a, b...)
    	fmt.Println(a)
    	for i,v:=range a{
    		fmt.Printf("index:%d, v-addr:%x, elem-addr:%x
    ",
    			i, &v, &a[i])
    	}
    	/*
    	v的地址总是一样的
    	[1 2 3 4]
    index:0, v-addr:c000010100, elem-addr:c00000e340
    index:1, v-addr:c000010100, elem-addr:c00000e348
    index:2, v-addr:c000010100, elem-addr:c00000e350
    index:3, v-addr:c000010100, elem-addr:c00000e358
    	*/
    }
    
    func test8(a []int){
    	//a[1] = 9 //引用传递main中的a编程[1,9]
    	a = append(a, 3) //如果原始a的长度=容量,会重新创建一个新的副本.return a
    }
    
    func main(){
    	a:=[]int{1,2}
    	test8(a)
    	fmt.Println(a)
    }
    
  • 相关阅读:
    作为另一个函数的值(读书摘)
    算法-二分查找与二叉排序树
    算法-图
    算法-二叉树
    算法-分治
    算法-回溯
    算法-动态规划
    算法-贪心
    算法-堆
    算法-栈,队列
  • 原文地址:https://www.cnblogs.com/lajiao/p/12650843.html
Copyright © 2011-2022 走看看