zoukankan      html  css  js  c++  java
  • go语言基础知识笔记(二)之数组和切片

    数组和切片知识用的也是比较多,的给我们工作带来很大的便利

    (一) 数组

    定义:在golang中数组的长度是不可变,数组存放要求是同一种数据类型
    //golang中数组定义的四种方法
    1.先声明,后赋值
      var arr1 [2]int
         arr1[0]=1
         arr1[1]=2

    2.声明同时赋值
      var arr2 = [2]int{1,2}
      //或者
      arr2 := [2]int{1,2}
    3.不指定长度程序自动计算长度
      var arr = [...]int{1,2}
      //或者
      arr := [...]int{1,2}
    4.key和value的形式
      var arr = [...]int{1:1,0:2}
    //或者
      arr := [...]int{1:1,0:2}
    //golang中数组遍历的两种方法
    1.常规方法
    for i:=0;i<len(arr);i++ {
      fmt.Printf("arr[%d] = %v",i,arr[i])
    }
    2.高级方法(推荐使用)
    for key(_),value:= range arr{
      fmt.Printf("arr[%d] = %v",i,arr[i])
    }
    //动态修改数组的值,默认情况下数组是值传递
    
    //形参定义成一个指针数据类型
    func T2(a *[]string) {
        *a[0] = 99 //修改原来的值
    }
    
    func main() {
        s1 := [...]string{11,22}
        T2(&s1) //传递一个数组的地址作为实际参数
        s1  = append(s1 , "33")
        fmt.Println(s1)
    }
    //数组指针和指针数组
    1.数组指针即是一个指针并且这个指针保存了一个指向数组的地址
       var arr =  [...]int{5:2}
       //数组指针
       var pf *[6]int = &arr
    2.指针数组即是一个数组,数组里面保存很多指针
      x,y := 1, 2
      pfArr := [...]*int{&x,&y}
    //多维数组(二维)
    1.多维数组即数组里面又是一个数组
    2.定义方法
      2.1先定义再赋值
        var arr1 [2][2]int
        arr1[0][0] = 5.....
      2.2定义的同时赋值
        var arr2 [2][2]int = [2][2]int{{1,2,3},{3,4,5}}
    3.多维数组的遍历
      3.1
        for i:=0;i<len(arr);i++{
           for j:=0;i<len(arr[i]);j++{
          }
        }
      3.2
        for i;value1 :=range arr2{
          for j;value2 :=range value1 {
            
        }
      
    }

    (二) 切片

      切片是数组的引用,并且是动态的数组,长度可以变化.

    //切片的定义的几种方法
    1.数组的引用
      var intArr [4]int = [...]{12,34,44,33,11}
      slice := intArr[1:3]
    2.make定义
      
    var slice []type = make([]type,len,[cap])
    3.常规用法
      var slice []type = []type{value1,value2,value3}
      
    遍历的方法和数组也是一样的就不继续啰嗦了
    //切片的内置函数
    1.动态添加切片
        append(切片,value1,value2,value3)
    2.切片的copy
        copy(切片1,切片2)
    //字符的切片
    1.字符的切片在某种情况下是不可变的
    2.想要修改字符串中的值[]byte(str)[这种是处理英文方式],
    []rune(str)[这种是处理中文方式]  

      

    IT这条路,当你懂得越多的时候,那么你不懂的也就会越多了.
  • 相关阅读:
    又到泰山了
    有趣的数字
    关于Servlet/JSP里"/"的用法
    [WS]一个简单的WSDL文档(下)
    30天敏捷结果(28):撰写你的个人使命
    推荐:敏捷个人应该订阅的博客
    30天敏捷结果(27):做些有重要意义的事
    30天敏捷结果(29):找到适合你发展的环境
    COM+的配置:痛并快乐着
    30天敏捷结果(22):设计你的一天
  • 原文地址:https://www.cnblogs.com/learningPHP-students2018/p/10785685.html
Copyright © 2011-2022 走看看