• Go-slice


    切片

    1.定义一个切片然后应用一个定义好的数组。

    	var intarr [5]int = [...]int{1, 2, 3, 4, 5}
    	//切片是引用类型,长度是动态的,其他与数组一样
    	//左闭右开,表示取数组intarr下标1到3(不包含3)
    	a := intarr[1:3]
    
    

    2.make创建

    1)make创建可以指定切片的大小,容量

    2)没有给各元素赋值,那么就是默认值

    3)创建的底层数组,对外不可见,只能通过slice访问

    	//2.make  var 切片名 []type=make([]type,len,[cap]) cap>=len
    	//                    数据类型          长度 容量可选
    
    	var s1 []int = make([]int, 4, 10)
    
    	s1[20] = 20
    
    	//3.定义一个切片,直接指定具体的数组,原理类似make
    	var strslice []string = []string{"jin", "wei", "chang"}
    	fmt.Println(strslice)
    

    4.切整个数组

    //左边为空表示从头开始,右边为空表示到底
    var slice=arr[:]
    

    5.切片定义完后,要引用到一个数组或make一个空数组才能使用

    6.切片可再切

    	var arr1 [5]int = [...]int{10, 20, 30, 40, 50}
    	s := arr1[1:4]  //20,30,40
    	s1:=s[1:2]  //30
    

    7append()

    向切片中追加数据,使用append函数,原理是底层重新创建一个数组,切片再次引用过去。

    	var slice3 []int = []int{100, 200, 300}
    	slice3 = append(slice3, 400, 500, 600)
    	//只能追加切片(切片后的3个点不能少),不能追加数组,
    	slice3 = append(slice3, slice3...)
    	fmt.Println("slice3", slice3)
    

    8.copy

    1)2个切片才能使用copy

    2)2者空间独立,不相互影响

    3)当S2定义长度小于3时,会将S1按下标顺序依次取出放入S2,如果S2长度为1,那么就只能放入12

    	//将S1的3个元素复制到S2,如要2个切片完全一样,就将s2定义长度为3
        var s1 []int = []int{12, 13, 14}
    	var s2 = make([]int, 5)
    	copy(s2, s1)
    	fmt.Println(s1) //[12 13 14]
    	fmt.Println(s2) //[12 13 14 0 0]
    

    9 string是个引用类型,底层是个byte数组,也能切片

    string不能用切片直接修改,要先转换成byte切片,再修改,然后再转换回string,

    string中只能是字母和数字,不能有中文,会出现乱码

    	str := "abc@jinwei"
        s2 := []byte(str)
    	s2[0] = 'p'
    	str = string(s2)
    	fmt.Println(str) //pbc@jinwei
    

    转换为[]rune,按字符处理,兼容汉字

    	str1 := "天龙八部"
    	s3 := []rune(str1)
    	s3[0] = 'p'
    	str1 = string(s3)
    	fmt.Println(str1)//p龙八部
    

    斐波那契数列

    func main() {
    	ss := fbn(99)s
    	fmt.Println(ss)
    }
    
    func fbn(n int) []uint64 {
    	var fbnslice = make([]uint64, n)
    	fbnslice[0] = 1
    	fbnslice[1] = 1
    
    	for i := 2; i < n; i++ {
    		fbnslice[i] = fbnslice[i-1] + fbnslice[i-2]
    	}
    	return fbnslice
    
    }
    
    
  • 相关阅读:
    crs_stop 错误一列
    本地管理表空间和字典管理表空间的特点,ASSM有什么特点
    RAC 11.2的新特性
    oracle 11g RAC 的一些基本概念(三)
    【1】【leetcode-130】 被围绕的区域
    【leetcode-125】 验证回文串
    【1】【leetcode-127】单词接龙word-ladder
    【1】【leetcode-115】 不同的子序列 distinct-subsequences
    【1】[leetcode-124] 二叉树中的最大路径和
    [leetcode-128] 最长连续序列
  • 原文地址:https://www.cnblogs.com/JinweiChang/p/14154447.html
Copyright © 2020-2023  润新知