• Go数组和切片


    • 数组

      Go语言中的数组和python中的列表,php中的关联数组还不一样。python中的列表和php中的关联数组可以任意伸缩,而go中的数组则需要指定数组的长度,一旦长度确定就不允许修改。
      
      // 只能存入三个字符串
      var arr1 [3]string = [3]string{"a","b",c}
      // 语法糖 ... , 在给变量赋值时可以不指定个数,同时也可以打散数据,类似于python中的* 和 **
      arr1 := [...]int{1,2,3,4}
      
    • 切片

      • 动态数组,可以认为就是python中的列表,由三部分组成 指针,长度,容量。

      • 使用make函数可以创建一个切片 make([]int,2,4) -> []int 指针 2切片长度 4切片容量

      • 使用字面量也可以创建一个切片 arr := []int{10,20,30,40} 切片的长度和容量都为4

      • 创建字符串切片并初始化第100个元素 str_slice := []string(99:"")

    • 切片限制容量 arr := arr1[2:3:4] 设置的容量不能大于切片的容量,这个案例中切片的容量为5,如果将4换成6 则会报 panic: runtime error: index out of range [2] with length 1 错误,一般设置可用容量和长度一致。

      • 例子

        arr := [...]int{1,2,3,4,5}
        fmt.Println(arr[0:1])
        
        // 声明一个切片使用make关键字
        slice := make(类型,长度,容量(可选))
        // 查看容量大小 使用cap函数
        cap(slice)
      
        // 切片添加数据
        tmp := make([]int,8,10) // 前8位都是0 [0,0,0,0,0,0,0]
        tmp = append(tmp,1) // 在前8位的基础上追加1 [0,0,0,0,0,0,0,1]
        tmp = append(tmp,2) // 在前9位的基础上追加2 [0,0,0,0,0,0,0,1,2]
      
      // 使用语法糖 ...解包的作用
      arr := []int{2,4,6}
      arr = append(arr,[]int{7,8,9}...)
      
  • 相关阅读:
    滑雪
    2084 数塔HDU
    括号匹配(二)
    项链
    单调递增最长子序列
    矩形嵌套
    最长公共子序列
    poj3253
    表达式求值
    颜色16进制代码表显示和16进制数值对比显示方便查找
  • 原文地址:https://www.cnblogs.com/wuxiaoshi/p/14393962.html
Copyright © 2020-2023  润新知